首页 文章

需要在rspec中调用stub()和should_receive()以获取视图部分规范

提问于
浏览
0

我在rspec(v2.8)中与should_receive()有些混淆

我的理解是它既存在方法 - 就像stub()那样 - 并设置了这个存根方法将被调用的期望 .

但是,在尝试使用它来截断从视图partial调用的辅助方法时,我不断收到错误:

Failure/Error: render 'invitations/header'
 ActionView::Template::Error:
   undefined method `require_javascript' for #<#<Class:0x7fe21d03d9f8>:0x7fe21cfd0c40>

最后,我不得不添加一个stub()方法 as well 来使测试成功通过 . 此代码如下所示 - 当我删除之前的块时,我得到上面显示的错误 .

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()方法才能成功传递 . 所以我很困惑为什么在这种情况下我需要它?

1 回答

  • 0

    删除该存根时,您的测试失败,因为它期望 view.should_receive(:require_javascript).with('expandable_section') .

    Stubbing意味着你基本上是重影一个方法调用 . 当您 render 视图时"stub"的行为就像该方法实际上会返回一些内容一样 .

    你可以在这里阅读更多:https://relishapp.com/rspec/rspec-mocks/v/2-4/docs/method-stubs

相关问题