2015-01-17 74 views
0

我正試圖在rails應用程序上使用ruby來做一些內容測試,以及我使用設計gem來實現用戶身份驗證。我無法登錄到我的應用程序來執行我的測試用例。在rails應用程序中通過水豚身份驗證

最初,我的情況如下:

scenario "User arrives at main page" do 
    visit "purchase_orders#index" 
    page.should have_content("All") 
    # some more tests and checks 
end 

凡purchase_orders#指數是通過身份驗證的根,其中用戶的採購訂單中。 但是當我運行測試,我發現了以下錯誤:

expected to find text "All" in "Log in to manage your orders * Email * Password Forgot your password? Remember me Sign up • Didn't receive confirmation instructions? About Us • Contact Us • 

它告訴我,它沒有得到過去的登錄頁面。接下來我嘗試添加以下到我的情況下,在運行測試之前,使其登錄:

visit "purchase_orders#index" 
    fill_in('Email', :with => '[email protected]') 
    fill_in('Password', :with => 'password') 
    click_button('Log in') 

其中用戶名和密碼是實際創建的帳戶,但它再次失敗,而且不會讓過去的標誌頁。最後,我嘗試了以前添加(:每個)方法,如下所示,試圖在測試用例簽署用戶:

before(:each) do 
    visit "users/sessions#new" 
    fill_in('Email', :with => '[email protected]') 
    fill_in('Password', :with => 'password') 
    click_button('Log in') 
end 

這又沒有爲我工作。所以我的問題是:通過登錄頁面和實際應用程序的最佳做法和語法是什麼?我查找了文檔和答案,但沒有找到任何東西。

謝謝!

回答

0

找到了答案。我安裝了寶石(寶石管理員)和工廠女孩寶石(寶石「factory_girl_rails」,「〜> 4.0」),並安裝了捆綁軟件。然後,我創建了工廠女孩用戶固定在規範文件夾中factory.rb文件如下:

# This is a user factory, to simulate a user object 
FactoryGirl.define do 
    factory :user, class: User do 
     first_name "John" 
     last_name "Doe" 
     email "[email protected]" 
     encrypted_password "password" 
    end 
end 
在我的軌道幫手文件

,我加入這一行能夠使用FactoryGirl的方法,而在調用它該類每次:

config.include FactoryGirl::Syntax::Methods 

後來,我加入這行到我的水豚測試頁面的頂部:

include Warden::Test::Helpers 
Warden.test_mode! 

最後,我要建T內部使用用戶對象他測試的範圍:

user = FactoryGirl.build(:user) 

每當我需要登錄,我用監獄長的登錄方法

 login_as(user, :scope => :user) 

瞧!

相關問題