如何添加表达式<action <t>&gt;作为对伪造物体的拦截?</action <t>

时间:2013-09-30 16:12:29

标签: c# unit-testing fakeiteasy

如果方法和参数已经表示为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)可以实现这一点,但我想知道是否有更简单的方法可以做到这一点?

0 个答案:

没有答案