2016-10-02 6 views
0

私たちは、Railsビューで反応コンポーネントを使用しています。その1つは、ボタンをクリックすると別のコンポーネントがレンダリングされます。RspecとCapybaraで新たに注入されたコンテンツをテストする

理想的には、これらの機能をRspec機能テストでバックアップしたいのですが、ボタンをクリックして新しいコンポーネントをレンダリングするとき、pageの値は反映されません。

レンダリングされた新しい反応コンポーネントの後に新たに注入されたコンテンツを取得する方法はありますか?ここで

は抜粋です:

scenario 'users should be able to move to step 2', js: true do 
    sign_in_with '[email protected]', 'testpassword' 
    visit new_path 
    fill_in 'name', with: 'Test' 
    select "Category One", :from => "dropdown" 
    click_button 'Next' 
    expect(page).to have_content('New Content') 
end 
+0

どのcapybaraドライバーをお使いですか? – faron

答えて

0

カピバラは実際に(すべてが正しく設定されている場合)任意のJSのロジックとpageを更新する必要があります。さらに詳しい情報:

Nextにクリックで何が起こっていますか?それは時間がかかりますか?さらに、あなたが目に見えるのブラウザでテストを実行したり、実際のページコンテンツ(例:https://github.com/mattheworiordan/capybara-screenshot

+0

次はクリックするだけでコンポーネントの状態が変わってレンダリングされるので、htmlが元々のものから新しいものに変わるのは時間がかかりません。私はWebkitドライバbtwを使用しています。 –

0

pageを参照するには障害が発生した場合にスクリーンショットを取るしたい場合があり、それをデバッグするには

を(あなたはカピバラ待ちタイムアウトを延長する必要がある場合があります) Capybara.current_sessionのショートカットにすぎません。キャッシュやページの現在の状態を表示できないようなものはありません。これは、正しい変更情報をチェックしていないことを示す傾向があります。また、ボタンをクリックしたときにページの情報が実際に変更されていないことがあります。変更されない情報の最も一般的な理由は、ボタンをクリックした後にpage.driver.error_messagesを確認することで確認できるJSエラーです。そのエラーの最も一般的な理由は、ブラウザで手動でテストしたときにうまく動作するページで、古いバージョンのQtを使用してcapybara-webkitを構築するか、(翻訳なしで)ES6の機能を使用しますQt capybara-webkitの最新バージョンが動作します。あなたはQt 5.5.xでcapybara-webkitを構築したことを確認したいと思っています。まだ動作しない場合は、前述のpage.driver.error_messagesを調べて、どのようなエラーが発生しているのか確認してください。

関連する問題