Rhono Mocks:.Stub和.Expect接口方法

时间:2019-04-04 18:50:55

标签: .net unit-testing mocking rhino-mocks

我有一组数百个单元测试,它们模拟了一个传递给被测方法的跟踪器。

interface ITracer {
  void Info (string message);
  void Warn (string message, Exception x = null);
  void Error (string message, Exception x = null);
}

在测试初始化​​中,跟踪器被模拟:

var tracer = MockRepository.GenerateMock<ITracer>();
// This stub here prevents Expect from working properly
tracer.Stub(t => t.Error(message: Arg<string>.Is.Anything, exception: Arg<Exception>.Is.Anything)
      .WhenCalled(_ => Debug.WriteLine(" [E] {1} {2}", _.Arguments[0], _.Arguments[1]));

然后每个测试都可以设定一些期望值:

tracer.Expect(trace => trace.Error(message: Arg<string>.Is.Anything, exception: Arg<Exception>.Is.Anything))
       .Repeat.AtLeastOnce()

在每个测试跟踪器的末尾,将验证期望:tracer.VerifyAllExpectations()

麻烦的是,一旦我将.Stub添加到模拟的跟踪器中,错误期望就不起作用了,并且当我看到测试输出中跟踪的错误时,抱怨发生了0次。

对Stub()模拟方法建立期望的正确方法是什么?

0 个答案:

没有答案