【问题标题】:Capybara select for a select-box populated dynamically using a db callCapybara 选择使用 db 调用动态填充的选择框
【发布时间】:2013-11-07 07:33:57
【问题描述】:

在我的索引视图中,我定义了以下选择框

 <%= select_tag('Country', options_for_select(@countries), :class => 'chosen-select') %>

@countries 在索引控制器中填充如下:

  @countries = CountryCode.uniq.pluck(:name)

因此,正如您所见,正在调用数据库以获取国家名称列表以填充选择框。 现在,在我的黄瓜步骤定义文件中,我有

Then(/^I should see a select\-box for Countries$/) do
  select 'UNITED STATES', :from => 'Country'
end

这给了我错误Unable to find option "UNITED STATES" (Capybara::ElementNotFound) 但是当我在浏览器中签入时,选择框确实有该选项。使用 capybara 为带有硬编码选项值的选择框选择元素工作正常,但在上述情况下,当使用数据库调用获取选项时,步骤定义失败。我该如何解决这个问题?

请帮忙 谢谢你

【问题讨论】:

  • 我认为,Capybara 需要一些时间来加载带有国家列表的选择框。你应该试试睡觉。

标签: ruby-on-rails ruby-on-rails-3 cucumber capybara bdd


【解决方案1】:

CountryCode 是 ActiveRecord 模型吗?如果是这样,则数据库可能为空,这可以解释为什么您的规范中没有值出现,但开发工作正常。

您可能希望在规范的 Before 钩子中使用类似以下内容的 CountryCode 调用:

Before do
  arel_double = double(:arel)
  CountryCode.stub(:uniq).and_return(arel_double)
  arel_double.stub(:pluck).with(:name).and_return(['ARUBA', 'UNITED STATES'])
end

确切的语法取决于您的存根库。

【讨论】:

  • 太棒了!,这就是问题所在。非常感谢:)
猜你喜欢
  • 2016-10-16
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多