我有一些使用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使测试通过。
有人知道可能导致此问题的原因吗?
答案 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 ...