我使用RhinoMocks进行一个非常简单的测试(我必须说我是初学者)。我试图嘲弄我的对象这样如何绕过RhinoMocks模拟中的方法执行?
var mock = MockRepository.GenerateMock<MyClass>();
创建一个帮助存根:
var stubLinkedObject = MockRepository.GenerateStub<MyClass>();
然后执行一些逻辑应该与我的存根参数调用该方法的类MyClass
的AddLink
。在测试结束时,我简单地断言,这种方法实际上是调用
mockAction.AssertWasCalled(a => a.AddLink(stubLinkedObject));
我注入了正确的依赖和方法实际上是调用。但是,问题在于MyClass
中的real实现被调用并导致崩溃,因为某些逻辑不能执行(链接集合不可用等)。我怎样才能绕过执行并简单地检查一个方法是否被调用?我试过类似的东西
mockAction.Stub(a => a.AddLink(null)).IgnoreArguments().Do(null);
在我进入执行前,但这似乎并没有工作(我只有一些例外)。任何想法和可能解释为什么模拟执行方法逻辑呢?
你的方法AddLink是虚拟的吗? – 2010-02-08 09:19:49
不,它不是,可能是这个问题:) – 2010-02-08 13:41:35
我很困惑。通常情况下,应该有一个被测试类的对象实例没有被模拟/存根。你似乎只有嘲笑和存根。模拟和存根仅用于在测试过程中需要控制的协作者对象。 – 2010-02-08 15:53:41