Rhino Mocks并通过无序调用进行了测试

时间:2010-04-25 06:12:33

标签: unit-testing rhino-mocks

我正在使用Rhino.Mocks来测试系统。

我要检查调用.LoadConfig和.Backup方法的顺序。我需要.LoadConfig成为第一个。

目前代码是这样的:

var module1 = mocks.Stub<IBackupModule>();
var module2 = mocks.Stub<IBackupModule>();

module1.Expect(x => x.Name).Return("test");
module2.Expect(x => x.Name).Return("test2");

using (mocks.Ordered())
{
  module1.Expect(x => x.LoadConfig(null));
  module2.Expect(x => x.LoadConfig(null));

  module1.Expect(x => x.Backup());
  module2.Expect(x => x.Backup());
}
mocks.ReplayAll();

问题是,还有对.Name属性的调用,并且在调用它时我不感兴趣:在.LoadConfig之前或.Backup之后 - 它无所谓。

当我跑这个时,我得到了例外:Unordered method call! The expected call is: 'Ordered: { IConfigLoader.LoadConfig(null); }' but was: 'IIdentification.get_Name();'

有没有办法解决这个问题?

由于

1 个答案:

答案 0 :(得分:1)

根据这个旧的CodeProject article,你可以“嵌套”你的Order()和Unordered()调用。也许这会让你得到你想要的东西。

“名称”属性是否被调用了很多次,以至于您不想将其设置为订购测试的一部分?