,你会如何去伪造了以下内容:伪造泛型方法FakeItEasy
public interface IBlah
{
Func<T, bool> ApplyFilter<T>(Func<T, bool> predicate) where T:IMessage;
}
我想是假简单地返回它没有任何变化的说法。但是,我想验证一下这个假货已经被叫了一次。一个用例如下:
public class Something
{
public Something(IBlah blah) { _blah = blah; }
public bool DoSomething(SomeValue m, Func<SomeValue, bool> predicate)
{
Func<SomeValue, bool> handler = _blah.ApplyFilter(predicate);
return handler(m);
}
}
即假冒需要充当通过,但我也需要能够验证它已被使用。
这是什么最好的方法呢?
[请不要担心人为的例子......有很多事情在幕后事,但我上面简化下来的例子。]
是否要验证它的使用不超过一次,至少使用过一次,还是只使用一次?如果它不符合这个条件会发生什么?该接口是否应该具有'numInvocations'属性?您可以验证它不会被称为* more *,而不是一次调用它,但知道它是否未被调用...您需要提供反馈的方式。 – Servy
没有涉及泛型,我可以用 var fake = A.Fake(); (()==> fake.SomeMethod(A ._)) .ReturnsLazily(x => x.GetArgument (0)); .... A.CallTo(fake).MustHaveHappened(Repeated.Exactly.Once); 我不知道如何做相同的Func 通用在那里。我尝试过创建接口的Dummy实现,并且可以完成传递,但由于具体,FakeItEasy无法验证它是否被使用。 –
ashic
所以,假设你需要确保一旦你想要方法返回一个具有两个属性'NumInvokations'和这个函数的类,就确实发生了。在其他地方传递函数,然后确定'NumInvokations'是否等于1。 – Servy