RhinoMock 3.6.1错误报告方法没有被调用?

时间:2013-11-25 21:47:40

标签: c# .net rhino-mocks

我有一些使用RhinoMock 3.6的3岁(写得不好)的测试。今天我升级到了3.6.1,突然间我在运行测试时遇到了ExpectationViolationException。

设置为:

var userid = user.Identifier;
UserRepository.
    Expect(x => x.GetUser(Arg.Is(userid), Arg.Is(long.MinValue), out Arg<bool>.Out(true).Dummy))
    .Return(user);

,例外是

  

Rhino.Mocks.Exceptions.ExpectationViolationException:   IUserRepository.GetUser(等于6a90efd1-a290-452a-a8ac-5b38377bc597,   等于-9223372036854775808,任何东西);预期#1,实际#0。

我当然检查了userid的值,这没关系。降级到3.6使测试通过。

有人知道可能导致此问题的原因吗?

1 个答案:

答案 0 :(得分:0)

有一些变化与Rhino Mocks在版本3.6和3.6.1中处理和引用参数的方式有关,因此我将测试方法更改为:

var userid = user.Identifier;
UserRepository.Stub(x => x
      .GetUser(Arg.Is(userid), Arg.Is(long.MinValue), out myVar)
      .OutRef(valueForMyVar)
      .Return(user);

如果您真的想确保调用该方法,可以在测试结束时使用UserRepository.AssertWasCalled ...