NSubstitute - 使成员返回lambda调用的结果

时间:2016-02-22 15:37:22

标签: c# mocking nsubstitute

我们都知道为替代品指定返回值的方式标准:

mySubstitute.Method().Returns(myValue);

我需要在每次调用时计算myValue,而不仅仅是一次。这可能吗?

示例:

mySubstitute.Method().Returns(() => ComputeValueBasedOnSystemClockAndTheWeather());

当然这不会编译,因为Method()并没有真正返回lambda。

1 个答案:

答案 0 :(得分:3)

我弹出了NSubstitue文档,发现他们有Return from a function的页面。

  

可以将对属性或方法的调用的返回值设置为函数的结果。这允许将更复杂的逻辑放入替代品中。虽然这通常是一种不好的做法,但在某些情况下它很有用。

calculator
    .Add(Arg.Any<int>(), Arg.Any<int>())
    .Returns(x => (int)x[0] + (int)x[1]);