2013-10-21 55 views
0

我有RSpec測試的問題。我正在使用FactoryGirl,Capybara 2. *並嘗試測試我的網站行爲。RSpec。 Rails 3.2。實例變量檢查。行爲測試

測試場景: 用戶點擊sign_in按鈕(設計控制器),他被重定向到root_path(由MyController管理)。在重定向before_filter之後:setup_params應該分配給@app變量(在action中:MyController中的find_apps)一些值。我想確保@app不是零,而是賦值。

這裏是我的sign_in_spec.rb

require "spec_helper.rb" 
require "mymodel.rb" 

describe MyContoller, :type => :feature do 

    before do 
    visit '/users/sign_in' 
    end 

    it "Shall redirect to user and ensure that @app is not nil" do 

    user = FactoryGirl.build(:user_monit) 
    fill_in "user[email]", with: user.email 
    fill_in "user[password]", with: user.password 

    #expect {click_button "Sign in"}.to change {@myapp}.from(nil) 
    click_button "Sign in" 

    get :find_apps 
    assigns(:myapp).should_not be_nil 

    end 
end 

在我spec_helper.rb要求部分

require 'rspec/rails' 
require 'rspec/autorun' 
require 'capybara/rails' 
require 'capybara/rspec' 
require 'mocha/setup' 
require 'factory_girl' 
.... 
config.include RSpec::Rails::RequestExampleGroup, type: :feature 

我有幾個錯誤:

1) result should have changed, but is still nil 
2) bad argument error for get :find_apps (ArgumentError: bad argument (expected URI object or URI string)) 

我在做什麼錯?

在此先感謝!

回答

1

你必須創建用戶纔可以登錄,從而使:

user = FactoryGirl.create(:user_monit) 

可以解決將正常的URI,而不是第二個問題:find_apps同樣喜歡您在塊之前

+0

謝謝,但我有得到ActiveRecord :: RecordInvalid:錯誤記錄無效。當我使用FactoryGirl.build時,我可以通過任何測試重定向 - 「斷言has_selector?」表#admin-credit-application'「在click_button」登錄「後返回true –

+0

如果你不能創建:user_monit也許與你工廠不好。 – Adeptus

+0

它的控制器測試不被接受,所以你可以像租用測試: [link](https://github.com/plataformatec/devise/wiki/How-To:-Controllers-tests-with-Rails-3-(and- rspec)) 如果你想與Capybara接受測試,你可以找到幫助僱用: [鏈接](https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara) – Adeptus