如果我有一个已经在其上声明了一个存根调用的Rhino Mock对象:
mockEmploymentService.Stub(x => x.GetEmployment(999)).Return(employment);
无论如何,我可以删除此调用以用不同的东西替换它,例如:
mockEmploymentService.Stub(x => x.GetEmployment(999)).Return(null);
我问的原因是我想设置一些通用的模拟器用于多个单元测试,然后允许每个单元测试在必要时定制调用。
答案 0 :(得分:20)
我使用此扩展方法来清除存根的行为(或模拟的行为+期望):
public static class RhinoExtensions
{
/// <summary>
/// Clears the behavior already recorded in a Rhino Mocks stub.
/// </summary>
public static void ClearBehavior<T>(this T stub)
{
stub.BackToRecord(BackToRecordOptions.All);
stub.Replay();
}
}
我从this other stackoverflow answer选择了它,或者可能是this one。
答案 1 :(得分:10)
我使用Repeat.Once()
或Repeat.Times(x)
方法,当达到限制时,它将在下一个存根\期望上移动。
答案 2 :(得分:1)
我实际上使用存根作为一种接收预期收益的方法,并且可以正常工作。
private void StubDoSomething(bool expected) => Dbs.Stub(x => x.DoSomething(Arg<string>.Is.Anything, Arg<object[]>.Is.Anything)).Return(expected);