我正在尝试模拟一个方法,该方法需要两个参数int和out of bool。我能够在第一次调用时正确设置它,它会返回正确的输出值和返回值。但是,当第二次尝试调用相同的方法时,它不是在调用我的委托。知道这里有什么问题吗:
我试过的
mock.GetRows(Arg.Is<int>(10), out moreRows).Returns(x =>
{
if (first)
{
first = false;
x[1] = true;
return new object[][] { new object[] { null, "Collêction Namê" }, new object[] { null, "Collêction Name" }, new object[] { null, "COllection Name" } };
}
else
{
x[1] = false;
return new object[][] { new object[] { collectionId, "Collection Name" } };
}
});
我也尝试过这个:
mock.GetRows(Arg.Is<int>(10), out moreRows).Returns(
x =>
{
first = false;
x[1] = true;
return new object[][] { new object[] { null, "Collêction Namê" }, new object[] { null, "Collêction Name" }, new object[] { null, "COllection Name" } };
},
x=>
{
x[1] = false;
return new object[][] { new object[] { collectionId, "Collection Name" } };
});
但是,这可行:
.ReturnsForAnyArgs(x =>
{
if (first)
{
first = false;
x[1] = true;
return new object[][] { new object[] { null, "Collêction Namê" }, new object[] { null, "Collêction Name" }, new object[] { null, "COllection Name" } };
}
else
{
x[1] = false;
return new object[][] { new object[] { collectionId, "Collection Name" } };
}
});
模拟out
参数的问题在于该值会更改每个调用,因此最初存根的调用Returns
不再匹配。
你已经正确识别使用的解决办法ReturnsForAnyArgs
,因为在这个答案描述。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句