我正在尝试模拟一个方法,它接受bool的两个参数int和out参数。我能够在第一次调用时正确设置它,并返回正确的值和返回值。但是,当第二次尝试调用相同的方法时,它不会调用我的委托。知道这里有什么问题:
我尝试了什么:
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" } };
}
});
答案 0 :(得分:1)
模拟[^# ]print
参数的问题是该值会更改每次调用,因此最初与out
存根的调用不再匹配。
您已正确确定使用Returns
的解决方法,为described in this answer。