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

sar*_*ara 3 c# mocking nsubstitute

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

mySubstitute.Method().Returns(myValue);
Run Code Online (Sandbox Code Playgroud)

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

例子:

mySubstitute.Method().Returns(() => ComputeValueBasedOnSystemClockAndTheWeather());
Run Code Online (Sandbox Code Playgroud)

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

小智 5

我跳到 NSubstitue 文档,看到他们有一个从函数返回的页面。

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

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