如何检查NSubstitute模拟中使用的参数

时间:2019-05-18 14:18:54

标签: c# unit-testing nsubstitute

我知道如何断言在模拟接口上对方法的调用是使用特定参数或任何参数完成的。

但是,我想存储用于调用该函数的参数并在其上运行另一个断言,而我在任何地方都找不到该怎么做的方法。

如何存储在调用模拟方法时使用的参数的值?

1 个答案:

答案 0 :(得分:3)

您可以按照Performing actions with arguments中的说明通过Arg.Do捕获自变量:

var firstArgsBeingMultiplied = new List<int>(); 
calculator.Multiply(Arg.Do<int>(x => firstArgsBeingMultiplied.Add(x)), 10);

calculator.Multiply(2, 10);
calculator.Multiply(5, 10);
calculator.Multiply(7, 4567); //Will not match our Arg.Do as second arg is not 10

Assert.AreEqual(firstArgsBeingMultiplied, new[] { 2, 5 });

还可以从.ReturnsWhen..Do回调中访问和存储参数。

希望这会有所帮助。