Je suis novice en matière de Moq et d'apprentissage.Moq: Spécification des valeurs de retour dans le cadre des attentes
Je dois tester qu'une méthode renvoie la valeur attendue. J'ai mis en place un exemple noddy pour expliquer mon problème. Cela échoue lamentablement avec:
"ArgumentException: L'expression n'est pas un appel de méthode: c => (c.DoSomething (" Jo " "Blog", 1) = "OK")"
Pouvez-vous corriger ce que je fais mal?
[TestFixtureAttribute, CategoryAttribute("Customer")]
public class Can_test_a_customer
{
[TestAttribute]
public void Can_do_something()
{
var customerMock = new Mock<ICustomer>();
customerMock.Setup(c => c.DoSomething("Jo", "Blog", 1)).Returns("OK");
customerMock.Verify(c => c.DoSomething("Jo", "Blog", 1)=="OK");
}
}
public interface ICustomer
{
string DoSomething(string name, string surname, int age);
}
public class Customer : ICustomer
{
public string DoSomething(string name, string surname, int age)
{
return "OK";
}
}
En un mot: si je voulais tester une méthode comme celle-ci, et je sais que je suis dans l'attente d'un retour « OK », comment pourrais-je écrire en utilisant Moq?
Merci pour vos suggestions.
Exactement. Son test n'a pas de sujet de test, ce qui a conduit à la confusion. Vous testez un sujet de test, pas un simulacre. –
J'apprends aussi, je pense que j'ai la tête enroulée autour de ceci, pourriez-vous confirmer s'il vous plaît. Dans cet exemple 'DoSomething' pourrait renvoyer' jabberwocky' mais parce que votre '// arrangez .Setup' est dit à' .Return ("OK") 'c'est l'assertion. Je comprends que le test est de s'assurer que 'TestSubject' fonctionne comme prévu, et qu'il n'y a pas de test sur' Customer' ici. Si tel est le cas, pourquoi affirmer la valeur de retour de 'Client' et pas seulement' .Returns ("SUCCESS") 'ou une autre chaîne générique pour vérifier que' TestSubject' s'est terminé avec succès? – JabberwockyDecompiler
@JabberwockyDecompiler - c'était juste un exemple de test où la sortie dépendait d'un collaborateur (raillé) .. par exemple, le client pouvait retourner "Sam" et la méthode/classe testée pouvait renvoyer "Hello Sam!". Pour tester ceci: vous devrez configurer le simulacre pour retourner "Sam" dans le test. – Gishu