2009-01-28 7 views
0

J'ai un code de test qui ressemble à ceci:Devrais-je utiliser un moq juste pour tester si une méthode est appelée?

[Test] 
public void RunTableInfoCommandShouldCallTableINfoWithName() 
{ 
    string expectedcommand = "TableInfo(TestTable,1)"; 

    Table.RunTableInfoCommand(mockmapinfo.Object, 
          "TestTable", 
          TableInfoEnum.TAB_INFO_NAME); //This is just an enum for 1. 

    mockmapinfo.Verify(m => m.Evaluate(expectedcommand)); 
} 

Dois-je être la création d'un test avec un objet fantaisie juste pour voir si la commande attendue qui est utilisée par la maquette est appelée à RunTableInfoCommand

Ou devrais-je juste avoir un test qui vérifie la sortie de RunTableInfoCommand et utilise le mock là parce que cela testerait pour voir si l'appel est fait aussi. RunTableInfoCommand renvoie une chaîne, comme vous pouvez le voir, je ne l'ai pas utilisée ici parce que je veux juste voir si la commande TableInfo est même appelée.

Répondre

2

Je ne pense pas que vous devriez tester pour voir si la fonction que vous appelez est appelée. Vous devriez supposer que ce sera le cas.

Ce que vous feriez mieux de tester est le comportement. Par exemple, configurez un test qui a une fonction qui appelle RunTableInfoCommand dans le cadre de son comportement attendu.

Ensuite, vérifiez le résultat est ce que vous attendiez.

par exemple.

[Test] 
public void GetTableName() 
{ 
    string expectedName = "TableInfo(TestTable,1)"; 
    Assert.AreEqual(testTable.GetTableName(mockmapinfo.Object) = expectedName); 
} 

Dans cet exemple, GetTableName serait en fait la fonction qui appelle RunTableInfoCommand. Donc vous testez une interface ou le comportement d'un objet.

Espérons que cela aide.

Questions connexes