如果方法和参数已经表示为Expression<Action<T>>
,是否有其他方法可以拦截FakeItEasy中的方法调用?
通常我只会使用
IFoo foo = A.Fake<IFoo>();
A.CallTo(() => foo.SomeMethod("SomeString", A<Exception>.Ignored)).Invokes( ... );
但在我目前的情况下,我有一个假的IFoo
和一个Expression<Action<IFoo>>
,我正试图将两者结合在一起。
这实际上是我为FakeIEasy重写的现有Moq代码,但我不确定它是否可行。 Moq版本是
private void ExampleMoqMethod(Expression<Action<IFoo>> setupAction)
{
Mock<IFoo> Mock = new Mock<IFoo>();
Mock.Setup(setupAction).Callback( ... );
}
我尝试了明显的(下面),但得到了“指定的对象不被识别为假对象”错误(我怀疑因为假对象根本没有被引用!)
private void ExampleFIEMethod(Expression<Action<IFoo>> callSpecification)
{
IFoo foo = A.Fake<IFoo>();
A.CallTo(callSpecification).Invokes( ... );
}
我猜想通过实施IFakeObjectCallRule
并使用Fake.GetFakeManager(foo).AddRuleFirst(customRule)
可以实现这一点,但我想知道是否有更简单的方法可以做到这一点?