2013-02-28 44 views
1

我已經安裝Rspec2 +叉勺+衛士+設計要求規格與設計+ Rspec2 +叉勺/衛隊

我的文件是在我的要求的規格如下

#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]request.env["devise.mapping"] = Devise.mapping[:user]spec/support/controller_macros.rb

+0

感謝您的答覆,它沒有工作,當我改變它,它說未定義局部變量或方法'請求'爲# sameera207 2013-02-28 20:05:17

0

在這裏,我回答了我自己的問題,並且我找到了解決問題的方法。

以下是我做

1)刪除從支持目錄controller_macros.rbdevise.rb

2)取出ControllerMacros引用從spec_helper.rb

3)步驟中添加以下代碼

#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在設計維基),但這工作:)