正如@JamesLucas说你不需要使用Return()
方法(你应该使用这种方法,只有当你的方法是不是void
)。
在这种情况下,你应该使用Do()
方法:
var stub = MockRepository.GenerateStub<ITempDA>();
stub.Stub(x => x.Import(Arg<object>.Is.Anything))
.Do(new Action<object>(o => MockedImport()));
,或者如果MockedImport
部份相同的参数Import
:
stub.Stub(x => x.Import(Arg<object>.Is.Anything))
.Do(new Action<object>(MockedImport);
您应该使用WhenCalled
方法时,被测方法叫你的假你想拦截执行(执行某些操作+更改返回值/更改参数/执行其他步骤等)。使用Do
而不是WhenCalled
的另一个原因是,您的代码变得更具可读性。
通常我不建议使用IgnoreArguments
方法。原因很简单,你测试方法的行为。当某些事情违反方法行为时,测试应该失败。 IgnoreArguments
容易隐藏的东西。但是,如果呼叫参数不重要,请执行以下操作:
stub.Stub(x => x.Import(null))
.IgnoreArguments()
.Do(new Action<object>(o => MockedImport()));