33
我想寫的東西是這樣的:Rhino Mocks收到參數,修改它並返回?
myStub.Stub(_ => _.Create(Arg<Invoice>.It.Anything)).Callback(i => { i.Id = 100; return i; });
我想傳遞給嘲笑,修改並返回實際的對象。
這是Rhino Mocks的情況嗎?
我想寫的東西是這樣的:Rhino Mocks收到參數,修改它並返回?
myStub.Stub(_ => _.Create(Arg<Invoice>.It.Anything)).Callback(i => { i.Id = 100; return i; });
我想傳遞給嘲笑,修改並返回實際的對象。
這是Rhino Mocks的情況嗎?
你可以使用WhenCalled
方法是這樣的:
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;
});
,然後你可以創建你的存根,例如:
Invoice invoice = new Invoice { Id = 5 };
Invoice result = myStub.Create(invoice);
// at this stage result = invoice and invoice.Id = 100
您可以通過添加IgnoreArguments避免調用返回()()最後我想。 – samjudson
@samjudson:即使使用IgnoreArguments,Rhino仍然會拋出一個無返回的異常,因此需要返回。 –