NoMethodError:未定义的方法`stub!'为零:NilClass

时间:2018-05-22 11:24:22

标签: activerecord rspec specifications

我正在尝试将rspec用于application_helper.rb中存在的活动链接条件。 Application_helper.rb代码:

def active_class(link_path)
    current_page?(link_path) ? 'active' : ''
  end

我试图将rspec用于此active_class方法,我使用存根来实现此目的。这是我的active_class方法的rspec代码。 Application_helper_spec.rb代码:

describe 'when called from "index" action' do
  before
    helper.stub!(:action_name).and_return('index')
  end
  it 'should do' do
    helper.active_class.should == 'active'
  end


describe 'when called from "other" action' do
  before
    helper.stub!(:action_name).and_return('other')
  end
  it 'should do' do
    helper.active_class.should == 'empty'
  end

我将错误视为未定义的方法存根。如何克服此问题?

1 个答案:

答案 0 :(得分:2)

我使用稍微不同的界面进行存根和模拟,如下所示:

allow(helper).to receive(:action_name).and_return('index')

当您只想存根响应时。

但是如果你需要设定一个期望:

expect(helper).to receive(:action_name).and_return('index')

您可以在文档中找到更多信息:https://relishapp.com/rspec/rspec-mocks/v/3-7/docs/basics