0

Rails アプリの手伝いを頼まれました。私はいくつかの失敗した rpsec テストを行っており、それらを合格させています。頭を壁にぶつけているものがあります。Rails 3.2.13 と Ruby 2.0 を使用しています 注: 私は完全に rspec のヌーブです。

vet-as-faculty の ID を持つフォームがあります。テストはこれを探していますが、見つかりません。エラーが発生します:

Capybara::ElementNotFound:
   Unable to find css "form#vet-as-faculty

テストの他のフォーム要素でも同様のエラーが発生しますが、テストは現在またはこの時点で失敗しています。

これは「通常」、フォームのマークアップが正しくないか、テストのスペルが間違っていることを意味します(いくつか見つけました)。しかし、これは私が手に入れることができません。私はこのエラーをグーグルで調べて、ちょっとしたものを見つけましたが、これについては何も役に立たないようです. 私はあなたがそこにいる教祖が私にとって簡単なものを見てくれることを願っています.

フォーム/ビュー (一部):

 <%= form_for @profile, :url => { :action => :vet_as_faculty }, :html => { :id => "vet-as-faculty" } do |f| %>
  <fieldset class="row1"><legend>Vet Me As Faculty</legend>
    <div class="form-pair" id="faculty-url">
    <div class="form-item">
      <label>Faculty URL</label>
    </div>
  <fieldset class="row2">
    <div class="form-submit" id="save-faculty">
      <%= f.submit "Send for Review" %>
    </div>
  </fieldset>
<% end %>

ソースを表示すると、次のように表示されます。

<form accept-charset="UTF-8" action="/research/chr/casestudies/profile/vet_as_faculty" class="edit_user" id="vet-as-faculty" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="FZtjli8HaGD3koUvSFAYR2Gy+waL8KDWflMNUo4tXXw=" /></div>
  <fieldset class="row1"><legend>Vet Me As Faculty</legend>
    <div class="form-pair" id="faculty-url">
      <div class="form-item">
        <label>Faculty URL</label>
      </div>
      <div class="form-value">
        <input id="user_faculty_url" name="user[faculty_url]" size="30" type="text" />
      </div>
  </fieldset>

  <fieldset class="row2">
    <div class="form-submit" id="save-faculty">
      <input name="commit" type="submit" value="Send for Review" />
    </div>
  </fieldset>
...

したがって、for id は 'id="vet-as-faculty"' と表示されます。しかし、テストはこれを認識しません。

テストコード:

context "within the faculty vetting block" do
    it "has the necessary form fields" do
      within "form#vet-as-faculty" do 
        expect(page).to have_css("input#user_faculty_url")
        expect(page).to have_css("input#save-faculty")
      end
    end
 end

この 1 つのテストのエラー出力:

3) Edit Profile View within the faculty vetting block has the necessary form fields
   Failure/Error: within "form#vet-as-faculty" do
   Capybara::ElementNotFound:
     Unable to find css "form#vet-as-faculty"
   # ./spec/features/edit_profile_view_spec.rb:48:in `block (3 levels) in <top (required)>'

テストでさらにドリルダウンタイプのcssを追加しようとしました

within "#page #content form#vet-as-faculty" do

フォームは div#content 内にあり、コンテンツは div#page 内にあります。これも役に立ちません。

何かご意見は?これを読んでくれてありがとう。

4

1 に答える 1

1

最良の推測は、フォームがあるページに実際に移動していないことです

before { visit new_my_model_path }

より一般的なアドバイスとして。マークアップ/CSS をアサートするだけのテストを作成することは避けてください。代わりに、このフォームで達成する必要のある動作に集中してください。そうすれば、テストの価値が大幅に高まります。

于 2013-05-29T12:36:51.407 に答える