如何使用 FakeItEasy 框架测试 Func<T> 是否被调用?

D.R*_*.R. 5 c# func fakeiteasy

如何使用FakeItEasy框架检查Func是否被调用?

例子:

Func<bool> myFunc = () => true;

// Unfortunately this fails:
A.CallTo(myFunc.Invoke()).MustHaveHappened();
Run Code Online (Sandbox Code Playgroud)

Chr*_*nty 6

假设您正在Func向被测代码提供 ,则可以执行此操作。您只需像Fake制作任何其他类型一样使用它即可。
它看起来像这样。

public class Foo {
  public bool Bar(Func<bool> fn) {
    return fn();
  }
}

[Test]
public void Should_call_fn() {
  var fn = A.Fake<Func<bool>>();

  (new Foo()).Bar(fn);

  A.CallTo(() => fn.Invoke()).MustHaveHappened();
}
Run Code Online (Sandbox Code Playgroud)