Ale*_*lex 4 c# unit-testing moq
我有以下(简化)代码:
public string methodName(ClassType object)
{
If(object.value == 1)
return "Yes";
else If(object.value == 2)
return "No";
else
return "whatever";
}
Run Code Online (Sandbox Code Playgroud)
然后我在单元测试中调用这个方法,并且需要根据对象值模拟返回类型:
_Service.Setup(x => x.methodName(new methodName { value = 1}).Returns("Yes");
_Service.Setup(x => x.methodName(new methodName { value = 2}).Returns("No");
Run Code Online (Sandbox Code Playgroud)
我知道我写的东西是错误的——但我怎样才能做到这一点?
你在正确的轨道上。使用 Moq,您需要准确指定哪个设置应该与每个输入匹配。你这样做:
_Service.Setup(x => x.methodName(It.IsAny<ClassType>())).Returns("whatever");
_Service.Setup(x => x.methodName(It.Is<ClassType>(o => o.value == 1))).Returns("Yes");
_Service.Setup(x => x.methodName(It.Is<ClassType>(o => o.value == 2))).Returns("No");
Run Code Online (Sandbox Code Playgroud)
第一行设置模拟以在使用任何值调用此方法时返回“无论如何”。以下两行覆盖了特定值的行为。
我会查看 Moq 的快速入门指南以获取更多详细信息,特别是匹配参数部分。
| 归档时间: |
|
| 查看次数: |
2121 次 |
| 最近记录: |