Rhinomocks,如何验证根本没有调用存根/模拟?

And*_*ndy 7 rhino-mocks

使用Rhinomocks,我如何验证根本没有调用Mock/stub?意思是没有在mock/stub上调用方法?

我知道AssertWasNotCalled方法,但是这个方法要求我提一个方法名.(也许我有一个可以调用10种不同方法的类).

 Log.AssertWasNotCalled(x => x.LogAndReportException(null, null), x => x.IgnoreArguments());
Run Code Online (Sandbox Code Playgroud)

Mar*_*ann 6

你可以使用Strict模拟,虽然这是一个可能在将来消失的功能:

var mocks = new MockRepository();
var cm = mocks.StrictMock<ICallMonitor>();
cm.Replay();

cm.HangUp(); // this will cause VerifyAllExpectations to throw
cm.VerifyAllExpectations();
Run Code Online (Sandbox Code Playgroud)

在此语法中,Strick Mock仅允许显式定义的调用.

  • @Maslow:不.`Replay`是一个Rhino Mocks扩展方法,它将mock置于重放模式.在它处于记录模式之前并且没有记录任何电话.当它进入重放模式时,它将完全允许:不能对它进行任何调用. (2认同)

Dav*_*d M 1

您可以使用该StrictMock方法创建严格的模拟 - 如果使用任何未例外的方法调用,这将失败。根据Ayende 的网站,这是不鼓励的,但听起来正是它有用的场景。