无法使用 Returns 模拟多次调用的方法
Cannot mock a method for multiple invocation with Returns
我正在尝试模拟一个方法,该方法采用 bool 的两个参数 int 和 out 参数。我能够在第一次调用时正确设置它,它 return 是正确的输出值和 return 值。但是,当第二次尝试调用相同的方法时,它并没有调用我的委托。知道这里出了什么问题:
我尝试了什么:
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
的解决方法,如 。
我正在尝试模拟一个方法,该方法采用 bool 的两个参数 int 和 out 参数。我能够在第一次调用时正确设置它,它 return 是正确的输出值和 return 值。但是,当第二次尝试调用相同的方法时,它并没有调用我的委托。知道这里出了什么问题:
我尝试了什么:
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
的解决方法,如