0

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

 <%= 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 为带有硬编码选项值的选择框选择元素工作正常,但在上述情况下,当使用数据库调用获取选项时,步骤定义失败。我怎样才能解决这个问题 ?

请帮忙谢谢

4

1 回答 1

0

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

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

于 2013-11-07T07:45:54.290 回答