如何使用FakeItEasy框架检查是否已调用Func?
示例:
Func<bool> myFunc = () => true;
// Unfortunately this fails:
A.CallTo(myFunc.Invoke()).MustHaveHappened();
答案 0 :(得分:4)
您可以这样做,假设您正在为正在测试的代码提供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();
}
答案 1 :(得分:1)
我认为你不能这样做。您只能确定是否调用接口上的属性/方法或抽象类上的虚方法,因为您必须模拟此对象并拦截对该方法的调用。你不能只是调用一个随机委托并检查它是否被调用。
例如,如果你有:
interface ISomething
{
void SomeMethod();
}
然后你可以这样做:
var fake = A.Fake<IContactSubmitter>();
// code which passes fake as dependency to something so SomeMethod will be caled...
A.CallTo(() => fake.SomeMethod().MustHaveHappened(Repeated.Once.Exactly);