2016-04-25 11 views
1

私は編集アクションを検証しようとしている機能テストを持っています。それは超簡単なテストですが、私は非常に多くを書いていないし、私は私が理解できないいくつかの間違いをしています。基本的には、ページが訪問されたとき、編集しようとしているテキストである情報を表示していないので、「更新」ボタンはありません。ここに私のエラーと明確にするためのコードです。さらに奇妙な何Rspecの機能テストの混乱

TEST

scenario "Staff can edit the response messages" do 
    group = Group.create!(name: "Group A", response: "You are now subscribed for updates") 
    visit "/groups/#{group.id}/edit" 

    user = FactoryGirl.create(:user) 
    fill_in "Email", with: user.email 
    fill_in "Password", with: user.password 
    click_button "Sign in" 

    expect(page).to have_content("You are now subscribed for updates") 
end 

enter image description here

VIEW

<div class="container text-center"> 
    <div class="row"> 
    <div class="col-lg-8 col-lg-offset-2 well"> 
    <%= form_for @group do |form| %> 
     <div class="form-group"> 
     <%= form.label :body, "Edit The Response:", class: "message_label"%> 
     <%= form.text_field :response, class: "form-control", placeholder: "New things are happening!" %> 
     </div> 
     <%= form.submit "Update", class: "btn btn-primary" %> 
    <% end %> 
    </div> 
</div> 
</div> 

は、私が "save_and_open_page" を実行すると、私は期待していたコンテンツが存在しているのですか?しかし、私のテストは、期待されたコンテンツがWEIRDに表示されないと言っても失敗します!

enter image description here

+0

こんにちは。あなたの視点では、再度テストしているテキストをどこに表示するかわかりません。エラーメッセージが表示されたイメージには、ページ上に実際に表示されているテキストがすべて表示されるわけではありません(右側のカットオフ)。一般的にsave_and_open_pageまたはsave_and_open_screenshotを使用することをお勧めします(バンドルにcapybara-screenshotがある場合)ページが実際に表示する内容をよく見てください。 – trueunlessfalse

+0

さて、save_and_open_pageを使用すると、ページに期待する内容が表示されますが、テストを実行すると表示されないので、それはさらに奇妙です。 – Cambass

+0

テストのために歌い込んだ後に 'pause 3'を挿入するだけです –

答えて

1

これまで私が見るように、問題があるとして:

  1. テストはvisit
  2. fill_inを実行するページがすでに

第二に期待が間違っている可能性がロードされている期待し、あなたはマジックsleep 2で手作業でか、またはカピバールを使って自動でページを読み込むのを待たなければなりませんファインダー/期待

あなたのテストでは、このいずれかのように見えることがあります。手動遅延の

group = Group.create!(name: "Group A", response: "You are now subscribed for updates") 
    user = FactoryGirl.create(:user) 

    visit "/groups/#{group.id}/edit" 
    // <= check any static text to ensure the page is loaded 
    // expect will wait for a defailt timeout ~ 2 seconds 
    expect(page).to have_content("Tulim time text") 

    fill_in "Email", with: user.email 

    // ... 

visit "/groups/#{group.id}/edit" 
    // wait a few seconds for page loading 
    sleep 5 
    fill_in "Email", with: user.email 
+0

スリープ2を追加するにはどうすればよいですか? – Bitwise

+0

私は既存のコードに私の例を示すことができます – Bitwise

+0

@CameronBass、私は答えを更新しました – andrykonchin

関連する問題