2016-05-19 6 views
0

私はCapybaraを使用している基本的な統合テストを行っていますが、必要なオブジェクトを最初に作成しないと統合テストが失敗するという問題があります。私はCapybaraを使った統合テストの最初のステップとしてすべてのオブジェクトを作成する必要がありましたか?オブジェクトの作成はあなたがはい、あなたはvisitあなたのカピバラのテストでを-ingを必要としているページに影響を与える場合、私はCapybara 2.4.3Capybara統合テストオブジェクトの作成

で失敗

scenario 'if media content contains more than 10 items display pagination links' do 
    sign_in 
    # Object creation 
    11.times do 
    FactoryGirl.create(:media_content) 
    end 
    within '.pagination' do 
    expect(page).to have_content '1' 
    end 
end 

成功

scenario 'if media content contains more than 10 items display pagination links' do 
    # Object creation 
    11.times do 
    FactoryGirl.create(:media_content) 
    end 
    sign_in 
    within '.pagination' do 
    expect(page).to have_content '1' 
    end 
end 

答えて

3

Rails 4.2.4を使用していますそのページにアクセスしたときにその内容が既にテストブラウザによって取得されているため、そのページ上の要素をテストする前にオブジェクトを作成することができます。

私はあなたがあなたのsign_in方法でvisit "some_login_page"とログイン成功時に、おそらくリダイレ​​クトを持っていることを前提とし、そうsign_inを終えたときに、テストブラウザが既に(すなわちつかんで)後でコンテンツをテストしようとしているページを訪問しました。その場合には、オブジェクトを作成後のページvisitはOK働くかもしれない - 私の心に来る

唯一の例外は、あなたが動的ページにサーバーから新しく作成された要素をつかむために遅れたAJAX要求を使用した場合です。

+0

'sign_in'メソッドを使ってログインに成功するとリダイレクトされるので、ページが取得された後には動作しないと考えられます。ありがとう – Michael

関連する問題