NoMethodError: undefined метод `stub! ' для nil: NilClass

Renusudhan спросил: 28 апреля 2018 в 09:44 в: activerecord

Я пытаюсь установить условие rspec для активной ссылки в файле application_helper.rb.Application_helper.rb:

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

Я попытался поместить rspec для этого active_class метод, я использовал заглушку для этой цели. Это мой код rspec для метода active_class.Application_helper_spec.rb code:

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'
  enddescribe '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

Я получаю ошибку как неопределенный метод stub.How can я преодолел эту проблему?

1 ответ

Есть решение
meta ответил: 28 апреля 2018 в 02:12

Я использую немного другой интерфейс для stubbing и mocking, который выглядит следующим образом:

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 / основы

Renusudhan ответил: 29 апреля 2018 в 06:00
Спасибо за ваш ответ, когда я добавлю этот код в мое состояние, я получил ошибку как неопределенный метод 'to'. Есть ли лучший способ изменить это?
meta ответил: 29 апреля 2018 в 07:15
Это странно, потому что это часть стандартного rspec. Можете ли вы попробовать то же самое с valilla rails + rspec app? Может быть, некоторые из ваших драгоценных камней или другой конфигурации мешают rspec mock / stub lib?
Renusudhan ответил: 30 апреля 2018 в 08:15
Спасибо, много, его разработали