我在rspec(v2.8)
中与should_receive()有些混淆我的理解是它既存在方法 - 就像stub()那样 - 并设置了这个存根方法的调用期望。
然而,在尝试使用它来截断从视图partial调用的辅助方法时,我不断收到错误:
Failure/Error: render 'invitations/header'
ActionView::Template::Error:
undefined method `require_javascript' for #<#<Class:0x7fe21d03d9f8>:0x7fe21cfd0c40>
最后,我必须添加一个stub()方法以及来使测试成功通过。此代码如下所示 - 当我删除之前的块时,我得到上面显示的错误。
describe 'invitation/header' do
before do
view.stub(:require_javascript) # Why is this required ?!
end
it "should initialize the expandable section javascript" do
view.should_receive(:require_javascript).with('expandable_section')
render 'invitations/header'
end
...
end
请注意,我在此文件中有许多其他测试,其中没有一个需要stub()方法才能成功传递。所以我很困惑为什么在这种情况下需要它呢?
答案 0 :(得分:0)
删除该存根时,您的测试失败,因为它期望view.should_receive(:require_javascript).with('expandable_section')
。
Stubbing意味着你基本上是重影方法调用。当您render
视图时,您的“存根”就像该方法实际上会返回某些内容一样。
您可以在此处阅读更多内容:https://relishapp.com/rspec/rspec-mocks/v/2-4/docs/method-stubs