3
我正在使用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();'
有没有办法来处理这个?
感谢
.Name不会被调用很多次,但是当它被调用时会被改变。它可以在所有.LoadConfigs之前或之前调用.LoadConfig ..但事实上,首先应该运行所有的LoadConfigs,并且只有所有的.Backups不会改变,所以我想测试它。 感谢您的链接,它没有解决问题,但至少我会把所有.Backups和所有.LoadConfigs放入另一个无序块:) – Shaddix 2010-04-29 04:35:05
好吧,如果您不关心对Name属性的调用,请尝试使用.Stub而不是.Expect。然后你的代码应该可以工作(不需要嵌套)。 – PatrickSteele 2010-04-29 12:28:46