使用 NSubstitute 具有可变数量参数的模拟函数
mock function with variable number of aguments using NSubstitute
我有一个使用以下方法的接口:
bool ProcessActions(int actionTypeId, out List<int> ints, params object[] actionParameters);
现在如何使用 NSubstitute 将此方法模拟为 return 一个值?这是我尝试过的:
this.actionOperationsMock.ProcessActions(Arg.Any<int>(), out List<int> _, Arg.Any<int>(), Arg.Any<int>(), Arg.Any<int>(), Arg.Any<DateTime>(), Arg.Any<DateTime>(), Arg.Any<string>()).Returns(
x =>
{
x[1] = null;
return true;
});
我试图只用前两个参数模拟它,但在我的测试中,这个方法是 returning false。
我建议使用 ReturnsForAnyArgs,因为您将模拟每个参数,而 params object[] 在这种情况下不必模拟,因为 params 允许 0 个参数。
mock.ProcessActions(Arg.Any<int>(), out Arg.Any<List<int>>()).ReturnsForAnyArgs(
x =>
{
x[1] = null;
return true;
});
var res = mock.ProcessActions(1, out var list, 1, 1, 1 , DateTime.Now, DateTime.Now.AddHours(2), "");
我有一个使用以下方法的接口:
bool ProcessActions(int actionTypeId, out List<int> ints, params object[] actionParameters);
现在如何使用 NSubstitute 将此方法模拟为 return 一个值?这是我尝试过的:
this.actionOperationsMock.ProcessActions(Arg.Any<int>(), out List<int> _, Arg.Any<int>(), Arg.Any<int>(), Arg.Any<int>(), Arg.Any<DateTime>(), Arg.Any<DateTime>(), Arg.Any<string>()).Returns(
x =>
{
x[1] = null;
return true;
});
我试图只用前两个参数模拟它,但在我的测试中,这个方法是 returning false。
我建议使用 ReturnsForAnyArgs,因为您将模拟每个参数,而 params object[] 在这种情况下不必模拟,因为 params 允许 0 个参数。
mock.ProcessActions(Arg.Any<int>(), out Arg.Any<List<int>>()).ReturnsForAnyArgs(
x =>
{
x[1] = null;
return true;
});
var res = mock.ProcessActions(1, out var list, 1, 1, 1 , DateTime.Now, DateTime.Now.AddHours(2), "");