Посмотреть вспомогательные методы, не включенные для представлений Devise в тестах интеграции / запроса rspec? - PullRequest
8 голосов
/ 05 августа 2011

Когда я захожу на страницу входа в браузере, все работает нормально.

Когда я захожу на страницу входа в тесте интеграции / запроса rspec, я получаю следующую ошибку:

ActionView::Template::Error:
   undefined method `title' for #<#<Class:0x00000007af9180>:0x00000007af32a8>

Метод title используется представлением и определен в ApplicationHelper, который devis, похоже, находит при использовании браузера. Однако во время интеграционных тестов rspec devise не может найти вспомогательный метод.

Есть ли что-нибудь, что я должен сказать? Кажется неправильным быть заглушкой в ​​интеграционных тестах. Любые другие идеи?

(Этот вопрос не о том, как включить помощников разработчиков в интеграционные тесты. Я вручную заполняю формы для проверки подлинности).

Ответы [ 3 ]

7 голосов
/ 24 февраля 2012

Похоже, эта проблема .(в некоторых случаях, связанных с ActiveAdmin https://github.com/gregbell/active_admin/wiki/Use-spork)

Здесь я нашел хак, который работает для меня (REE 1.8.7, Rails 3.1, Capybara, Devise, active_admin).

Однако, это вряд ли будет объединено, поэтому я поставил spork-rails на здесь с примененным патчем. И, как вы, наверное, знаете, я могу указать свой Gemfile на этот репо:

gem 'spork-rails', :git => "git://github.com/chopmo/spork-rails.git"

Не оптимально, но на данный момент он выполняет свою работу.

2 голосов
/ 11 июня 2012

У меня была похожая проблема с использованием Cucumber при установке devise:

undefined local variable or method `flash_block' for #<#<Class:0x007ffd0a28dae8>:0x007ffd0b2f6d58> (ActionView::Template::Error)

Я решил это, включив модуль в env.rb

Spork.prefork do
  include FlashBlockHelper

Надеюсь, это поможет.

1 голос
/ 05 августа 2011

Внутри / spec / support создайте devise.rb с этим:

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
end

Убедитесь, что ваш spec_helper.rb включает в себя:

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

и что ваши спецификации имеют:

require 'spec_helper'
...