【发布时间】:2012-09-26 10:31:51
【问题描述】:
我想测试一个构造,它在其中调用一个方法两次以获得两个不同的值
public class stubhandler
{
public stubhandler()
{
string codetext = model.getValueByCode(int a,string b); // 1,"High" result Canada
string datatext = model.getValueByCode(int a,string b); // 10, "Slow" result Motion
}
}
为了测试上面的内容,我使用了一个单元测试类
[TestMethod]
public void StubHandlerConstructor_Test()
{
Mock<Model> objMock = new Mock<>(Model);
objMock.Setup(m => m.getValueByCode(It.IsAny<int>,It.IsAny<string>)).Returns("Canada");
objMock.Setup(m => m.getValueByCode(It.IsAny<int>,It.IsAny<string>)).Returns("Motion");
stubhandler classstubhandler = new stubhandler();
}
上述方法通过但codetext和datatext包含相同的值Motion 我希望他们设置为
codetext = Canada
datatext = Motion
我怎样才能做到这一点?
我试过objMock.VerifyAll() 没通过测试??
【问题讨论】:
-
这可能不是最好的方法,但为什么不将 It.IsAny
替换为专门匹配 Canada 或 Motion 的特定值呢?不过,这感觉像是一个相当笨拙的解决方案。 -
返回值与虚拟参数无关
标签: c# visual-studio-2010 unit-testing moq