如何用不同的存根调用替换已声明的存根调用?

Sim*_*eep 24 c# rhino-mocks

如果我有一个已经在其上声明了存根调用的Rhino Mock对象,就像这样:

mockEmploymentService.Stub(x => x.GetEmployment(999)).Return(employment);
Run Code Online (Sandbox Code Playgroud)

无论如何我可以删除此调用以用不同的东西替换它,例如:

mockEmploymentService.Stub(x => x.GetEmployment(999)).Return(null);
Run Code Online (Sandbox Code Playgroud)

我问的原因是我想设置一些通用的模拟器用于多个单元测试,然后允许每个单元测试在必要时定制调用.

Wim*_*nen 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我从其他stackoverflow答案中选择了这个,或者也许就是这个.

  • 谢谢Wim,唯一的问题是它会清除所有存根调用,所以我必须重置它们而不是仅仅覆盖我感兴趣的那个. (2认同)

Mar*_*rst 10

我使用Repeat.Once()或者Repeat.Times(x)在达到限制时将在下一个存根\期望上移动的方法.