C# 如何添加表达式<;行动<;T>&燃气轮机;作为对伪造物体的拦截?

C# 如何添加表达式<;行动<;T>&燃气轮机;作为对伪造物体的拦截?,c#,unit-testing,fakeiteasy,C#,Unit Testing,Fakeiteasy,如果方法和参数已经表示为一个表达式,那么在FakeiTasy中是否有另一种拦截方法调用的方法 通常我只会使用 IFoo foo = A.Fake<IFoo>(); A.CallTo(() => foo.SomeMethod("SomeString", A<Exception>.Ignored)).Invokes( ... ); 我尝试了明显的(如下)错误,但出现了“指定对象未被识别为伪对象”错误(我怀疑是因为根本没有引用伪对象!) private void Exa

如果方法和参数已经表示为一个
表达式
,那么在FakeiTasy中是否有另一种拦截方法调用的方法

通常我只会使用

IFoo foo = A.Fake<IFoo>();
A.CallTo(() => foo.SomeMethod("SomeString", A<Exception>.Ignored)).Invokes( ... );
我尝试了明显的(如下)错误,但出现了“指定对象未被识别为伪对象”错误(我怀疑是因为根本没有引用伪对象!)

private void ExampleFIEMethod(表达式调用规范)
{
如果oo foo=A.Fake();
调用(…);
}

我想通过实现
IFakeObjectCallRule
并使用
false.GetFakeManager(foo).AddRuleFirst(customRule)
来猜测这是可能的,但我想知道是否有更直接的方法来实现这一点?

我不认为提供
表达式是一个选项?这将在您发布的显而易见的解决方案中起作用。除此之外,我还没有任何东西给你。不幸的是没有。直到创建了
表达式
时,我才有权访问Fake。如果有一种方法可以将
表达式中的对象替换为伪对象…
a.CallTo(callSpecification)。调用(…)SynchronizedMockLogger
对象,该对象以线程安全的方式实现了标准的
Debug()
Error()
等方法,但也有StartCounting和StopCounting方法,这些方法将方法调用用于计数。(即
表达式和标准的
.musthaveOccomed()
方法,但我不相信这是有效的……我将用一个适当的例子来编辑我的文章。
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( ... );
}