मेरे पास एक समान त्रुटि है, लेकिन सभी मेरी समस्या को ठीक नहीं करेंगे।devise फेंकने के साथ rspec एकीकरण परीक्षण NoMethodError त्रुटि
मेरे फ़ाइल 'कल्पना/अनुरोध/news_controller_spec.rb' की तरह दिखता है:
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
मैं परीक्षण चलाने अगर मैं मिल जाएगा:
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'
मैं https://github.com/plataformatec/devise/wiki/How-To%3a-Controllers-and-Views-tests-with-Rails-3-%28and-rspec%29 और अन्य समान पर निर्देशों का पालन किया यहां प्रश्न, लेकिन मुझे कोई समाधान नहीं मिल रहा है।
मैं निम्नलिखित gemset उपयोग कर रहा हूँ:
- capybara (1.1.2)
- वसीयत (1.5.3)
- factory_girl_rails (1.6.0)
- रेल (3.2.0, 3.1.1)
- rspec (2.8.0)
- rspec कोर (2.8.0)
- rspec-उम्मीदों (2.8.0)
- rspec-mocks (2.8.0)
- rspec-रेल (2.8.1)
और कुछ अन्य जवाहरात।
क्या कोई मेरी मदद कर सकता है, लॉग इन उपयोगकर्ता के साथ मेरा एकीकरण परीक्षण प्राप्त कर रहा है। इस मामले में समाचार केवल तभी प्रदर्शित होते हैं, यदि उपयोगकर्ता लॉग इन होता है।
धन्यवाद।
क्या आप वाकई 'टेस्ट :: Unit' और' RSpec' विन्यास को मिलाया नहीं किया है? * Rspec-rails-2.0.0 और devise-1.1 के रूप में, अपने चश्मे में तैयार करने का सबसे अच्छा तरीका है spec_helper में निम्नलिखित को जोड़ने के लिए: * https://gist.github.com/1682113 – jibiel
मुझे उम्मीद है। मेरे पास एक फ़ाइल _spec/support/devise.rb_ है और इस फ़ाइल में मैंने 'RSpec.configure do | config | लिखा था। config.in शामिल करें Devise :: TestHelpers,: type =>: नियंत्रक अंत'। समर्थन-निर्देशिका में फ़ाइलों को 'Dir [Rails.root.join ("spec/support/**/*। Rb")] द्वारा शामिल किया जाना चाहिए। प्रत्येक {| f | एफ} की आवश्यकता है। सही? –
http://stackoverflow.com/questions/6725169/testing-models-with-rspec-using-devise आप निश्चित रूप से भूल गए हैं: टाइप =>: नियंत्रक' भाग। बस इसे हटा दिया और एक ही त्रुटि मिली। – jibiel