我可以设置一个模拟对象来始终返回作为参数给出的对象吗?我有一个方法
public MyObject DoSomething(MyObject obj)
我希望有一个模拟,它总是为每次调用DoSomething返回obj,有点像这样:
mock.Stub(x=>x.DoSomething(Arg<MyObject>.Is.Anything).Return(Arg<MyObject>)
虽然我不确定在返回位中放什么......
编辑:我试过这个: MyObject o=null;
mock.Stub(x=>x.DoSomething(Arg<MyObject>.Is.Anything).WhenCalled (y=>
{
o = y.Arguments[0] as MyObject;
}).Return (o);
似乎它可能很有希望,但没有运气。张贴它以防它慢慢某人的记忆...
答案 0 :(得分:7)
这应该可以满足您的需求:
mock.Stub(x => x.DoSomething(null))
.IgnoreArguments()
.WhenCalled(x =>
{
x.ReturnValue = (MyObject) x.Arguments[0];
})
.Return(null)
.TentativeReturn();
基本上我正在使用WhenCalled来覆盖null的默认返回值(我将其标记为暂定值),并将参数值传递给DoSomething。
答案 1 :(得分:1)
更简单的方法:
var mock = MockRepository.GenerateStub<IFoo>();
mock.Expect(m => m.Bar())
.Return("Result goes here")
.Repeat.Any();