如何根据 Moq 方法设置中的参数值 return 两个不同的值?
How to return two different values depending on the argument values in Moq method setup?
我有一个测试,在某个时候比较两个列表。
IsEqual(List<string> a, List<string> b, ComparisonConfig conf)
如果列表 A 等于列表 B,则上述函数 returns true 结果
false 否则结果。
在测试中,我需要设置此函数,以便在调用时 return 得到正确的结果。
_service
.Setup(x => x.IsEqual(It.IsAny<List<string>>(), It.IsAny<List<string>>(), null))
.Returns(Result.Ok(true));
现在这总是 return 正确,即使列表不相等。
所以问题是当参数相等时如何设置returnResult.Ok(true)
,否则Result.Ok(false)
。
Returns
有几个重载接受具有不同数量参数的 Func
,因此可以在 returning 值时访问调用参数:
_service.Setup(x => x.IsEqual(It.IsAny<List<string>>(), It.IsAny<List<string>>(), null))
.Returns((List<string> l1, List<string> l2, ComparisonConfig c) =>
{
if(...) // some logic with l1 and l2
{
return Result.Ok(true);
}
return Result.Ok(false);
});
Returns
使用的委托应与正在设置的成员的签名和 return 类型相匹配。
我有一个测试,在某个时候比较两个列表。
IsEqual(List<string> a, List<string> b, ComparisonConfig conf)
如果列表 A 等于列表 B,则上述函数 returns true 结果 false 否则结果。
在测试中,我需要设置此函数,以便在调用时 return 得到正确的结果。
_service
.Setup(x => x.IsEqual(It.IsAny<List<string>>(), It.IsAny<List<string>>(), null))
.Returns(Result.Ok(true));
现在这总是 return 正确,即使列表不相等。
所以问题是当参数相等时如何设置returnResult.Ok(true)
,否则Result.Ok(false)
。
Returns
有几个重载接受具有不同数量参数的 Func
,因此可以在 returning 值时访问调用参数:
_service.Setup(x => x.IsEqual(It.IsAny<List<string>>(), It.IsAny<List<string>>(), null))
.Returns((List<string> l1, List<string> l2, ComparisonConfig c) =>
{
if(...) // some logic with l1 and l2
{
return Result.Ok(true);
}
return Result.Ok(false);
});
Returns
使用的委托应与正在设置的成员的签名和 return 类型相匹配。