首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSpec和Capybara:如何确定选择控件是否选择了特定选项?

RSpec和Capybara:如何确定选择控件是否选择了特定选项?
EN

Stack Overflow用户
提问于 2012-11-28 07:58:11
回答 1查看 1.4K关注 0票数 3

给定一个select控件,您希望在表单加载时选择适用的选项(通过明显地在控制器中为您的模型加水),如何在RSpec/Capybara集成测试中确定是否实际选择了正确的选项?

例如,给定以下select控件...

代码语言:javascript
复制
<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>

...how您会在值10018上测试selected="selected“吗?

代码语言:javascript
复制
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....another尝试了一下,但它似乎忽略了块项目(它说即使有错误的信息也是好的-原因可能很明显):

代码语言:javascript
复制
  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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-28 09:25:46

请按如下方式尝试

代码语言:javascript
复制
it " should have your_value when page loaded" do 
  find_field(field).value.should eq "your_value"
end

希望能有所帮助

为了适应上面的例子:

代码语言:javascript
复制
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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13595428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档