3

フォームのロード時に(明らかにコントローラーでモデルをハイドレイトすることにより)適切なオプションを選択する選択コントロールがある場合、RSpec / Capybara統合テストで、適切なオプションが実際に選択されているかどうかをどのように判断しますか?

たとえば、次の選択コントロールが与えられた場合...

<select class="select optional" id="receiving_tally_po_id" name="receiving_tally[po_id]">        
    <option value="10020">PO-10020 - Schoen Inc</option>
    <option value="10018" selected="selected">PO-10018 - Senger, Eichmann and Murphy</option>
</select>

...値10018でそのselected="selected"をどのようにテストしますか?

describe "auto-populate with PO information" do
  let!(:po) { FactoryGirl.create(:po) }

  before { visit new_receiving_tally_path(:po => po) }
  # The following checks to see if the option is actually there, but not if it's selected.
  it { should have_xpath "//select[@id = '#receiving_tally_po_id']/option[@value = '#" + po.id.to_s + "' ]" }
end

UPDATE ....別の刺し傷がありますが、ブロックアイテムを無視しているようです(誤った情報があってもすべて問題ないと言っています-理由はおそらく明らかです):

  it "should have the proper PO selected" do
    should have_selector("select#receiving_tally_po_id") do |content|
      content.should_not have_selector(:option, :value => po.id.to_s, :selected => 'selected')
    end
  end
4

1 に答える 1

5

次のようにしてみてください

it " should have your_value when page loaded" do 
  find_field(field).value.should eq "your_value"
end

それが役立つことを願っています

上記の例に合わせるには:

subject { page }
... 
    describe "auto-populate with PO information" do
      let!(:po) { FactoryGirl.create(:po) }
      before { visit new_receiving_tally_path(:po => po) }
      it { find_field('receiving_tally_po_id').value.should eq po.id.to_s }
    end
于 2012-11-28T01:25:45.957 に答える