【发布时间】:2013-06-25 01:18:29
【问题描述】:
我的问题和这个类似:Mocha: stubbing method with specific parameter but not for other parameters
obj.expects(:do_something).with(:apples).never
perform_action_on_obj
perform_action_on_obj 不会像我预期的那样调用do_something(:apples)。但是,它可能会调用do_something(:bananas)。如果是这样,我会遇到意外的调用失败。
我的理解是,由于我将never 放在期望的末尾,因此它仅适用于特定的修改期望。然而,一旦我开始嘲笑 obj 上的行为,我似乎在某种意义上“搞砸了”。
如何允许在 obj 上调用 do_something 方法的其他方法?
编辑:这是一个清晰的例子,完美地展示了我的问题:
describe 'mocha' do
it 'drives me nuts' do
a = mock()
a.expects(:method_call).with(:apples)
a.lol(:apples)
a.lol(:bananas) # throws an unexpected invocation
end
end
【问题讨论】:
-
你需要确定你是否调用 do_something(:bananas) 你有一个 expects(:do_something).with(:bananas)
-
为什么?为什么 mocha 会“接管”方法调用。一旦我像这样模拟一个方法调用,它就会搞砸一切
-
我不太了解 - 您是否希望多次调用该方法而不会导致错误,或者您是否试图断言该方法永远不会使用给定参数调用?
-
两者。我想断言该方法永远不会使用给定参数调用,同时仍允许使用其他参数调用它。
标签: ruby-on-rails ruby-on-rails-3 unit-testing testing mocha.js