Mam podobny błąd tutaj zamieszczony, ale wszystko nie rozwiąże mojego problemu.test integracji rspec z wyrzutami devise NoMethodError
Mój plik 'Spec/request/news_controller_spec.rb' wygląda następująco:
require 'spec_helper'
describe "NewsController" do
include Devise::TestHelpers
describe "GET /news" do
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
@user = Factory.create(:user)
@user.confirm!
sign_in @user
end
it "after login should show the latest news an screen" do
page.should have_content("News")
end
end
end
Gdybym uruchomić test Wezmę:
Failures:
1) Campaigns GET /news works!
Failure/Error: Unable to find matching line from backtrace
NoMethodError:
undefined method `env' for nil:NilClass
# /Users/.../gems/devise-1.5.3/lib/devise/test_helpers.rb:25:in `setup_controller_for_warden'
# /Users/.../gems/rspec-rails-2.8.1/lib/rspec/rails/adapters.rb:15:in `block (2 levels) in setup'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/hooks.rb:35:in `instance_eval'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/hooks.rb:35:in `run_in'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/hooks.rb:70:in `block in run_all'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/hooks.rb:70:in `each'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/hooks.rb:70:in `run_all'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/hooks.rb:368:in `run_hook'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:292:in `block in run_before_each_hooks'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:292:in `each'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:292:in `run_before_each_hooks'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example.rb:217:in `run_before_each'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example.rb:79:in `block in run'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example.rb:173:in `with_around_hooks'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example.rb:77:in `run'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:355:in `block in run_examples'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:351:in `map'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:351:in `run_examples'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:337:in `run'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:338:in `block in run'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:338:in `map'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:338:in `run'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/command_line.rb:28:in `block (2 levels) in run'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/command_line.rb:28:in `map'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/command_line.rb:28:in `block in run'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/reporter.rb:34:in `report'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/command_line.rb:25:in `run'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:80:in `run_in_process'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:69:in `run'
# /Users/.../gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:10:in `block in autorun'
I przestrzegać instrukcji na https://github.com/plataformatec/devise/wiki/How-To%3a-Controllers-and-Views-tests-with-Rails-3-%28and-rspec%29 i inne podobne Pytania tutaj, ale nie mogę znaleźć rozwiązania.
Używam następujący gemset:
- kapibary (1.1.2)
- opracować (1.5.3)
- factory_girl_rails (1.6.0)
- poręcze (3.2.0, 3.1.1)
- rspec (2.8.0)
- rspec rdzeniem (2.8.0)
- rspec-oczekiwania (2.8.0)
- rspec-mocks (2.8.0)
- rspec-szyny (2.8.1)
i inne kamienie szlachetne.
Czy ktoś może mi pomóc, moje testy integracyjne z zalogowanym użytkownikiem działają. W takim przypadku wiadomości są wyświetlane tylko wtedy, gdy użytkownik jest zalogowany.
Dzięki.
Czy jesteś pewien, że nie miesza się '' testowe :: konfiguracje RSpec' Unit' i? * Jeśli chodzi o rspec-rails-2.0.0 i devise-1.1, najlepszym sposobem na umieszczenie go w swojej specyfikacji jest dodanie następujących elementów do spec_helper: * https://gist.github.com/1682113 – jibiel
Mam nadzieję, że tak. Mam plik _spec/support/devise.rb_ iw tym pliku napisałem 'RSpec.configure do | config | config.include Devise :: TestHelpers,: type =>: controller end'. Pliki w katalogu wsparcia powinny być zawarte w 'Dir [Rails.root.join (" spec/support/**/*. Rb ")]. Each {| f | wymagają f} '. Dobrze? –
http://stackoverflow.com/questions/6725169/testing-models-with-rspec-using-devise Zdecydowanie zapomniałeś części ': type =>: controller'. Właśnie go usunąłem i dostałem ten sam błąd. – jibiel