我们都知道为替代品指定返回值的方式标准:
mySubstitute.Method().Returns(myValue);
我需要在每次调用时计算myValue,而不仅仅是一次。这可能吗?
示例:
mySubstitute.Method().Returns(() => ComputeValueBasedOnSystemClockAndTheWeather());
当然这不会编译,因为Method()
并没有真正返回lambda。
答案 0 :(得分:3)
我弹出了NSubstitue文档,发现他们有Return from a function的页面。
可以将对属性或方法的调用的返回值设置为函数的结果。这允许将更复杂的逻辑放入替代品中。虽然这通常是一种不好的做法,但在某些情况下它很有用。
calculator
.Add(Arg.Any<int>(), Arg.Any<int>())
.Returns(x => (int)x[0] + (int)x[1]);