我在使用 moq 进行一些单元测试时遇到了一些麻烦。
如果我有这样的功能:
public string GetName(IMapinfoWrapper wrapper)
{
return wrapper.Evaluate("My com command");
///"My comm command" is the same all the time.
}
然后我有一个测试来检查 GetName 函数的返回值:
[Test]
public void Test()
{
Mock<IMapinfoWrapper> mock = new Mock<IMapinfoWrapper>();
mock.Expect(mapinfo => mapinfo.Evaluate(It.IsAny<String>()))
.Returns("TableName");
Assert.AreEqual("TableName", GetName(mock.object));
}
所以我的问题是应该像这样定义模拟:
mock.Expect(mapinfo => mapinfo.Evaluate(It.IsAny<String>()))
.Returns("TableName");
或像这样:
mock.Expect(mapinfo => mapinfo.Evaluate("My com command")
.Returns("TableName");
使用第二种方式的唯一问题是,我觉得我将方法 GetName 的实现绑定为始终在内部使用“My com command”字符串。
这是我应该做的还是我做错了。
我才刚刚开始进行单元测试和模拟,所以我仍然不确定一切应该如何结合在一起。