English 中文(简体)
我应该使用Moq来测试方法是否被调用吗?
原标题:
  • 时间:2009-01-28 04:57:27
  •  标签:

我有一些测试代码看起来像这样:

[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命令是否被调用。

问题回答

我认为您不应该测试以查看您正在调用的功能是否被调用。您应该假设它会被调用。

你最好做的是测试行为。例如设置一个测试,其中包含一个调用RunTableInfoCommand函数作为其预期行为的函数。

然后检查结果是否符合您的预期。

例如

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

在此示例中,GetTableName 实际上是调用 RunTableInfoCommand 函数的函数。因此,您正在测试对象的接口或行为。

希望这能帮到你。





相关问题
热门标签