Должен ли я использовать moq просто для проверки, если метод вызывается? - PullRequest
0 голосов
/ 28 января 2009

У меня есть тестовый код, который выглядит следующим образом:

[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));
 }

Должен ли я создавать тест с фиктивным объектом, чтобы посмотреть, вызывается ли ожидаемая команда, используемая макетом, в RunTableInfoCommand

Или я должен просто иметь тест, который проверяет выходные данные RunTableInfoCommand и использовать там макет, потому что это проверило бы, чтобы увидеть, если вызов также сделан.

RunTableInfoCommand возвращает строку, как вы можете видеть, я не использовал ее здесь, потому что я просто хочу посмотреть, вызывается ли даже команда TableInfo.

1 Ответ

2 голосов
/ 29 января 2009

Не думаю, что вам следует проверять, не вызвана ли вызываемая вами функция. Вы должны предположить, что это будет.

Что вы можете сделать лучше всего, это проверить поведение. Например, настройте тест, который имеет функцию, которая вызывает RunTableInfoCommand как часть ожидаемого поведения.

Затем проверьте результат, который вы ожидали.

, например

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

В этом примере GetTableName фактически будет функцией, которая вызывает RunTableInfoCommand. Итак, вы тестируете интерфейс или поведение объекта.

Надеюсь, это поможет.

...