1

メールアドレスとパスワードの確認フィールドを含むフォームページがあり、どちらも「確認」というラベルが付いています。これは、RSpec で実行すると、予想どおり失敗します。たとえば、電子メールのラベルを「電子メールの確認」に変更して、ラベルを一意にすると、合格します。ラベルはそのままでいいと思います。form_for で生成されたメール ID を使用すると、カピバラは満足しているように見えますが、テストは失敗します。私も同じ結果で名前を試しました。

RSpec/カピバラ抽出物:

fill_in "company_contact_email_confirmation", with: "example@example.com"

form_for 抽出:

<div class="field">
  <%= f.label :contact_email_confirmation, "Confirmation" %><br />
  <%= f.email_field :contact_email_confirmation %>
</div>

生成されたソース:

<div class="field">
  <label for="company_contact_email_confirmation">Confirmation</label><br>
  <input id="company_contact_email_confirmation" name="company[contact_email_confirmation]" size="30" type="email">
</div>

エラーメッセージ:

1) 有効な情報を含む会社ページのサインアップにより、会社が作成されます

 Failure/Error: expect { click_button submit }.to change(Company, :count).by (1)
   count should have been changed by 1, but was changed by 0

ここの他の場所で提案されているように、 Capybara を使用withinしても、まだ機能しません。

RSpec/カピバラ抽出物:

within ".email_stuff" do
  fill_in "Confirmation", with: "example@example.com"
end

form_for 抽出:

<div class="email_stuff">
  <div class="field">
    <%= f.label :contact_email_confirmation, "Confirmation" %><br />
    <%= f.email_field :contact_email_confirmation %>
  </div>
</div>

生成されたソース:

<div class="email_stuff">
  <div class="field">
    <label for="company_contact_email_confirmation">Confirmation</label><br />
    <input id="company_contact_email_confirmation" name="company[contact_email_confirmation]" size="30" type="email" />
  </div>
  </div>

Capybara は文句を言わないようですが、テストは同じエラーで失敗します。Capybara で同じフォームに同じラベルを 2 回使用できるようにするにはどうすればよいですか?

4

1 に答える 1

0

仮想確認フィールドのステータスを確認するために、ActiveRecord の after_validation コールバックにデバッグ ステートメントを追加しました。上記のコードに示すように、メール確認フィールドを名前または ID で参照しましたが、パスワード確認フィールドとメール確認フィールドの両方を ID で参照していませんでした。電子メールの確認フィールドがフォームの最初にあるため、Capybara は間違った確認フィールドにパスワード データを入力していました。ID をパスワード フィールドに入れておけば、うまくいったはずです。両方の ID が最も安全です。

于 2012-05-19T00:50:21.640 に答える