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

时间:2010-03-18 12:02:35

标签: c# rhino-mocks

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

mockEmploymentService.Stub(x => x.GetEmployment(999)).Return(employment);

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

mockEmploymentService.Stub(x => x.GetEmployment(999)).Return(null);

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

3 个答案:

答案 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);