C# Rhino Mock接收参数,修改并返回?
我试着写这样的东西:C# Rhino Mock接收参数,修改并返回?,c#,.net,rhino-mocks,C#,.net,Rhino Mocks,我试着写这样的东西: myStub.Stub(_ => _.Create(Arg<Invoice>.It.Anything)).Callback(i => { i.Id = 100; return i; }); myStub .Stub(_ => _.Create(Arg<Invoice>.Is.Anything)) .Return(null) // will be ignored but still the API requires
myStub.Stub(_ => _.Create(Arg<Invoice>.It.Anything)).Callback(i => { i.Id = 100; return i; });
myStub
.Stub(_ => _.Create(Arg<Invoice>.Is.Anything))
.Return(null) // will be ignored but still the API requires it
.WhenCalled(_ =>
{
var invoice = (Invoice)_.Arguments[0];
invoice.Id = 100;
_.ReturnValue = invoice;
});
myStub.Stub(=>.Create(Arg.It.Anything)).Callback(i=>{i.Id=100;返回i;});
我想得到传递给mock的实际对象,修改它并返回
Rhino Mock是否可能出现这种情况?您可以在调用时使用以下
方法:
myStub.Stub(_ => _.Create(Arg<Invoice>.It.Anything)).Callback(i => { i.Id = 100; return i; });
myStub
.Stub(_ => _.Create(Arg<Invoice>.Is.Anything))
.Return(null) // will be ignored but still the API requires it
.WhenCalled(_ =>
{
var invoice = (Invoice)_.Arguments[0];
invoice.Id = 100;
_.ReturnValue = invoice;
});
我不需要添加IgnoreArguments()来避免使用Return()。
这是我最初的方法:
List<myEntity> GetDataByRange(int pageSize, int offsetRecords);
列出GetDataByRange(int pageSize,int offsetRecords);
以下是我的模拟示例:
_Repository.Stub(x => x.GetDataByRange(Arg<int>.Is.Anything, Arg<int>.Is.Anything))
.WhenCalled(x => {
var mylist = entitiesList?.Skip((int)x.Arguments[1])?
.Take((int)x.Arguments[0])?.ToList();
x.ReturnValue = mylist;
});
\u Repository.Stub(x=>x.GetDataByRange(Arg.Is.Anything,Arg.Is.Anything))
.何时调用(x=>{
var mylist=entitiesList?.Skip((int)x.Arguments[1])?
.Take((int)x.Arguments[0])?.ToList();
x、 ReturnValue=mylist;
});
我认为,通过在末尾添加IgnoreArguments(),可以避免调用Return()。@samjudson:Rhino仍然会抛出一个异常,即使带有IgnoreArguments,也不会返回,因此需要返回。是的,Rhino Mocks 4.0.0+似乎不需要在调用.WhenCalled()
之前调用。但它只适用于方法存根。如果我们存根索引器,它仍然需要在.whencall()
之前使用.Return()
。