C# FakeiTesy-在调用拦截期间模拟返回值
你能帮我了解一下假货的高级用法吗。 我得到了一个方法(假设它名为“Insert”),它将一个参数作为参数。此参数包含大量数据。 我想将此参数作为“Insert”的结果返回C# FakeiTesy-在调用拦截期间模拟返回值,c#,.net-core,fakeiteasy,C#,.net Core,Fakeiteasy,你能帮我了解一下假货的高级用法吗。 我得到了一个方法(假设它名为“Insert”),它将一个参数作为参数。此参数包含大量数据。 我想将此参数作为“Insert”的结果返回 object.Insert(A.) .Invokes(obj=> { var p=obj.GetArgument(0); ---在此处将p设置为返回值-- } 差不多吧。 有可能吗 我试过了 A.CallTo(() => obj.Insert(A<T>._)).ReturnsLazily((o) =>
object.Insert(A.)
.Invokes(obj=>
{
var p=obj.GetArgument(0);
---在此处将p设置为返回值--
}
差不多吧。
有可能吗
我试过了
A.CallTo(() => obj.Insert(A<T>._)).ReturnsLazily((o) => o.GetArgument<T>(0);
A.CallTo(()=>obj.Insert(A.))).returnslazilly((o)=>o.GetArgument(0);
它也不工作。在调试中,它并没有停止。可能根本没有调用它
提前谢谢。正如Alexander Petrov所说,这应该可以工作,但您的代码太过简洁,无法确定。我将复制我在Fakeetisy gitter聊天中键入给您的答案: 您的代码有点简洁,因此我必须猜测一些细节。最好包含更多内容,并/或准确描述发生的情况,但您的第二种方法听起来不错,尽管它比需要的要复杂一些。我自己会编写此代码:
A.CallTo(()=>fake.Insert(A.u41;).ReturnsLazily((typeof p)=>p));
其中,TypeOfP
是参数的类型。这正是中描述的方法
如果这对您不起作用,我要做的第一件事就是确保您配置了正确的方法。您在参数列表中使用了正确的类型吗?是否存在Insert
重载,该重载占用了您在生产代码中实际调用的更多(或更少)参数,因此单参数版本(需要TypeOfP
)实际上没有被调用?有时这很容易直观地检查,有时这有助于调试代码
如果您能够提供更多的测试和生产代码,或者至少提供方法签名,如果您仍然被困,我们可能会提供帮助。应该可以。显示更多代码。可以。非常感谢您提供详细的答案。
A.CallTo(() => obj.Insert(A<T>._)).ReturnsLazily((o) => o.GetArgument<T>(0);