2017-07-07 8 views
0

Rails 5アプリケーション用のRSpec Capybaraテストを作成しています。私のアプリケーションは、HTMLとCSSを書く方法を学ぶ学生のためのものです。アプリケーションは「テスト」オブジェクトを作成し、ユーザーがテストを実行できるようにします。ユーザーが質問に正しく回答するたびに、アプリはテストオブジェクトの「スコア」属性に追加されます。最後に、アプリケーションはユーザーに最終スコアを与え、テスト結果を記録します。要素が見つからないため、Capybaraテストが失敗する

ボタンを見つけることができないため、私のカピバラテストに失敗しました。私のアプリの仕組みによって、ユーザーは質問に答えて「送信」ボタンをクリックします。回答を提出すると、「次の質問」と表示される[SECOND]ボタンが表示されます。

私のテストでは2番目のボタンが見つかりません。私はテストの専門家ではなく、助けを借りることができます。私は "スリープ5"を試みたが、うまくいかなかった。

1) 失敗/エラー不正解でテストを受けて:ここで

にエラーがある。ここclick_button '次へ質問'

Capybara::ElementNotFound: 
    Unable to find button "Next Question" 
# ./spec/features/taking_test_spec.rb:12:in `block (2 levels) in <top (required)>' 

は私のテストで:

ここ
require 'rails_helper' 

feature "taking test" do 

    scenario "with incorrect answers" do 
     visit '/' 
     click_link "HTML Test" 
     click_button "Start" 
     fill_in "answer", with: '<p>' 
     click_button 'Submit' 
     sleep 5 
     click_button 'Next Question' 
     expect(page).to have_content('CSS helps you control the appearance of HTML elements.') 
    end 

end 

テストのためのコントローラの関連部分です:

ここでは3210

はquestion1するための図でカピバラを見つけることができないボタンを含め、次のとおりです。あなたのNext Questionがボタンではありません

<div class="container-fluid"> 

    <div class="row background-white"> 
     <div class="col-md-8 col-md-push-2 score_container"> 
      <h5 class="text-center">Current Score: <%= @test.score %></h5> 
     </div> 

     <div class="col-sm-6 col-sm-push-3 col-xs-10 col-xs-push-1 question_container"> 
      <div class="form_group"> 
      <%= form_tag question1_path(@test), method: :get do %> 
       <h5>1. How do you write an opening paragraph tag in HTML?</h5> 
       <div class="form-group"> 
        <%= text_area_tag :answer, params[:answer], class: 'form-control', id: 'answer' %> 
       </div> 
       <% if !flash[:success] && !flash[:danger] %> 
       <div class="form-group"> 
        <%= submit_tag "Submit", class: "btn btn-primary" %> 
       </div> 
       <% end %> 
      <% end %> 
      </div> 

      <% if flash[:success] || flash[:danger] %> 
       <%= link_to "Next Question", question2_path(@test), class:"btn btn-success pull-right" %> 
      <% end %> 
     </div> 
    </div> 
</div> 

答えて

1

、それはリンク(href属性を持つ<>要素だ - であることを起こりますボタンのように見えますが、ボタンではありません)。 Capybaraはボタンを入力[タイプのサブミット、リセット、イメージ、ボタン]またはボタン要素として定義します。リンクをクリックするにはclick_linkを使用する必要があります。気にしない場合はclick_link_or_buttonを使用する必要があります。

visit '/' 
click_link "HTML Test" 
click_button "Start" 
fill_in "answer", with: '<p>' 
click_button 'Submit' 
click_link 'Next Question' 
expect(page).to have_content('CSS helps you control the ap 
+0

私はそれを試みました。ありがとうございました! –

関連する問題