2013-02-28 3 views
1

I가 설치 Rspec2 + Spork + 가드 + 고안요청 사양 고안 + Rspec2 + Spork/가드

내 요구 사양에

#spec_helper.rb 
Spork.prefork do 
    #code 
    Dir[Rails.root.join('spec/support/**/*.rb')].each {|f| require f} 
    RSpec.configure do |config| 
    config.extend ControllerMacros, :type => :controller 
    end 
end 

Spork.each_run do 
    # This code will be run each time you run your specs. 
    FactoryGirl.reload 
    include ControllerMacros 
end 

#spec/support/controller_macros.rb 
module ControllerMacros 
    def login_user 
     before(:each) do 
     @request.env["devise.mapping"] = Devise.mapping[:user] 
     user = FactoryGirl.create(:user) 
     sign_in user 
     end 
    end 
end 

#spec/support/devise.rb 
Spec.configure do |config| 
    config.include Devise::TestHelpers, :type => :controller 
end 

를 다음과 같이 내 파일은

#spec/features/documents_spec.rb 
require 'spec_helper' 

describe "Documents" do 

    login_user 

    describe "GET /documents" do 
    it "should display document name as sameera CV" do 
     #spec code 
    end 
    end 
end 

bundle exec guard을 실행하면

1) Documents GET /documents should display document name as sameera CV 
    Failure/Error: Unable to find matching line from backtrace 
    NoMethodError: 
     undefined method `env' for nil:NilClass 
    # ./spec/support/controller_macros.rb:4:in `block in login_user' 
구글에서 아무것도를 통해 수정개

지금까지 내가했던 많은 작업을 할 것, 누군가가 나를 도울 수 :

을 내가

  • 레일 3.2.9
  • RSpec에 2.12.0에있어
  • 크게 감사합니다 도움이 될 것 2.2.3

을 고안

답변

1

시도 짱 ging @request.env["devise.mapping"] = Devise.mapping[:user] to request.env["devise.mapping"] = Devise.mapping[:user] in spec/support/controller_macros.rb

+0

답장을 보내 주셔서 감사합니다, 내가 그것을 변경했을 때, 그것은 정의되지 않은 지역 변수 또는 메서드에 대한 # 요청에 대한 RSpec :: 코어 :: ExampleGroup :: Nested_1 :: Nested_2 : 0x007ffae03aaab0> – sameera207

0

여기에서 나는 내 자신의 질문에 대답하고 있는데, 내가 물어 본 질문에 대한 해결책을 찾을 수있었습니다.

에 따라 내가

1

가) spec_helper.rb

3)에서 controller_macros.rbdevise.rb 지원 디렉토리에서

2) 제거 ControllerMacros 참조를 제거했던 단계

다음 코드 추가
#spec/features/documents_spec.rb 
before(:each) do 
    user = FactoryGirl.create(:user) 
    visit root_path 
    fill_in 'user_email', :with => user.email 
    fill_in 'user_password', :with => user.password 
    click_button 'Sign in' 
end 

나는 더 우아한 방법이 있어야한다고 확신한다. (d devies wiki에서 escive),이 작업 :) :)