如何使用 FakeItEasy 框架检查是否调用了 Func?
例子:
Func<bool> myFunc = () => true;
// Unfortunately this fails:
A.CallTo(myFunc.Invoke()).MustHaveHappened();
如何使用 FakeItEasy 框架检查是否调用了 Func?
例子:
Func<bool> myFunc = () => true;
// Unfortunately this fails:
A.CallTo(myFunc.Invoke()).MustHaveHappened();
假设您正在向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();
}
我不认为你能做到这一点。您只能确定是否调用了接口上的属性/方法或抽象类上的虚拟方法,因为您必须模拟此对象并拦截对该方法的调用。您不能只调用一个随机委托并检查它是否被调用。
例如,如果您有:
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);