我一直对 rspec (v2.8) 中的 should_receive() 感到困惑
我的理解是,它既对方法进行了存根——就像 stub() 所做的那样——并设定了将调用这个存根方法的期望。
但是,在尝试使用它来存根从视图部分调用的辅助方法时,我不断收到错误消息:
Failure/Error: render 'invitations/header'
ActionView::Template::Error:
undefined method `require_javascript' for #<#<Class:0x7fe21d03d9f8>:0x7fe21cfd0c40>
最后,我还必须添加一个 stub() 方法以使测试成功通过。此代码如下所示 - 当我删除 before 块时,我得到上面显示的错误。
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() 方法才能成功通过。所以我很困惑为什么在这种情况下需要它?