Как я могу заглушить метод controller / current_user в приемочном тесте Capybara - PullRequest
2 голосов
/ 12 августа 2011

У меня есть вспомогательный метод, который вызывает current_user.elptable_for_reward?и я хочу заглушить этот звонок в спецификации приемки Капибары.В моей модели у меня есть фиктивный метод-заполнитель:

User.rb

def eligible_for_reward?
  "blah"
end

Вот что я пробовал до сих пор:

  1. Я попытался заглушить current_user, но в результатеошибка "изменить замороженный объект", потому что контроллер равен нулю.Я считаю, что контроллер будет установлен, только если я использую RSpec get вместо посещения some_path.Мне нужно придерживаться посещения some_path, я полагаю, в противном случае мой page.should ... все терпит неудачу, потому что страница не установлена.

  2. Я попытался войти в систему как пользователь (login_as (пользователь)который успешно проходит через регистрацию / логин), а затем указывает на user.elptable_for_reward ?, но это, похоже, не работает, так как я все еще возвращаюсь к тесту "бла"

Есть хороший способ заглушить этот метод?

1 Ответ

7 голосов
/ 13 августа 2011

Заглушка в спецификации приемки не очень хорошая идея. Если другого пути нет, вы можете просто:

User.any_instance.stub!(:eligible_for_reward?).and_return(true)

Просто помните, что заглушки / насмешки в спецификациях приемки означают, что вы действительно ничего не тестируете.

...