1

所以首先,我使用內置的Rails自帶的集成測試套件,而不是黃瓜,webrat等。我想master在切換到另一個測試之前套房。設計在軌道集成測試中不能正常工作

使用設計1.4.2和導軌3.1。

無論如何,我正在編寫一個模擬用戶註冊帳戶,確認帳戶,重新登錄和填寫表單的集成測試。這是事情似乎南下的地方。從我可以告訴,設計有問題與我的控制器創建操作,並因爲這些問題與設計,current_user是零。這裏是一個片段:

require 'test_helper' 

class SignupTest < ActionDispatch::IntegrationTest 

test "new signup and application" do 

    go_to_signup_page 
    create_new_account :user => {:email => "[email protected]", :user_name => "dfdfdf",  
    :password => "dfdfdfdfdfdf", :password_confirmation => "dfdfdfdfdfdf"} 
    confirm_account_creation 
    go_to_signin_page 
    log_in 
    go_to_form 
    submit_form 
end 

.....等試驗....

def go_to_form 
    get "/applications/new" 
    assert_response :success 
    assert_template "applications/new" 
    assert_equal 'Please fill out this application', flash[:notice] 
end 


def submit_form 
    post "/applications", :application => {.....} 
    assert_response :redirect 
    assert_equal 'Application Successful ', flash[:notice] 
end 

在我的控制,我有

before_filter :authenticate_user! 

從我確定,「DEF go_to_form「通過了。但是,當我嘗試在「def submit_form」中進行POST時,它告訴我需要「請先登錄或註冊」,當您尚未登錄時嘗試訪問某個功能時出現典型的設計錯誤。 我認爲這個問題也導致current_user爲零。

如果我刪除了before_filter,我要發佈,但current_user仍然爲空。

我無法解釋這裏發生了什麼。除CREATE操作之外,所有其他操作都以高亮度傳遞。

回答

1

這是我使用FactoryGirl的工作代碼,您可以成功登錄這段代碼,確保您輸入了確切的電子郵件和密碼。但在Devise中也有內置的測試用例,請看看那裏。

setup do 
    @user = FactoryGirl.create(:user) 
    end 

    def do_login 
    visit '/' 
    click_link "Sign in" 
    fill_in 'user_email', :with => '[email protected]' 
    fill_in 'user_password', :with => 'xxxx' 
    click_on('sign_in') 
    end 

    test 'should go to section index' do 
    do_login 
    assert page.has_content?('Signed in successfully.') 
    end 

這是一個工廠:

FactoryGirl.define do 
    factory :user do 

    email "[email protected]" 
    password "xxxx" 
    password_confirmation "xxxx" 
    :user_name "admin" 
    confirmed_at "#{Time.now }" 
    end 
end 
相關問題