1

如果方法和参数已经表示为,是否有另一种方法来拦截 FakeItEasy 中的方法调用Expression<Action<T>>

通常我会简单地使用

IFoo foo = A.Fake<IFoo>();
A.CallTo(() => foo.SomeMethod("SomeString", A<Exception>.Ignored)).Invokes( ... );

但在我目前的情况下,我有一个假IFoo和一个Expression<Action<IFoo>>,并试图将两者结合在一起。

这实际上是我正在为 FakeIEasy 重写的现有 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)但我想知道是否有更直接的方法来做到这一点?

4

0 回答 0