1

rspec と capybara を使用して、既存の機能をカバーする rails4 アプリの統合テストを作成しています (最初にアプリを作成したときは怠惰でした)。次の送信ボタンはブラウザー (Chrome) で正しく機能し、成功ページにリダイレクトされます (期待どおり)。

<div class="actions">
    <%= button_to "RSVP Now", new_event_attendee_path(f), :id => "open-contacts-dialog-btn", :class => "inbox-sf-add-btn tip", :style => "background:lightgreen" %>
</div>

ただし、次のテストは失敗します。

describe "should show confirmation message after submitting the form" do
  it "should go to success message when form submitted" do
    click_link 'See more details'
    click_button 'Sign Me Up!'
    fill_in 'Email', with: "simon@example.com"
    fill_in 'attendee_name', with: "Simon T"
    fill_in 'attendee_phone', with: "1234567890"
    fill_in 'attendee_num_guests', with: "1"
    click_on 'RSVP Now'
    page.should have_content("Awesome! You're signed up.")
  end
end

以下のエラーで:

Failure/Error: click_on 'RSVP Now'
 ActionController::RoutingError:
   No route matches [POST] "/events/%23%3CActionView::Helpers::FormBuilder:0x007ff9d7e003c0%3E/attendees/new"

私のルートは次のようになります: https://gist.github.com/srt32/6076872

ユーザーの観点からはアクションは機能しますが、テストで動作を再現できないため、少し迷っています。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

2

通常の送信タグが必要です。

フォーム ヘルパー ブロックを使用する場合:

<%= f.submit "RSVP Now" %>

または、スタンドアロンのタグ ヘルパーを使用します。

<%= submit_tag "RSVP Now" %>

どのように機能するかについてのドキュメントを読んでくださいbutton_to。主に、何らかの方法でデータを変更するアクションなど、POST する必要があるリンクとして使用されます。通常のフォームでは使用できません。

于 2013-07-25T04:50:21.867 に答える