在我的索引视图中,我有以下选择框定义
<%= select_tag('Country', options_for_select(@countries), :class => 'chosen-select') %>
@countries在索引控制器中填充如下:
@countries = CountryCode.uniq.pluck(:name)
因此,正如您所看到的那样,正在进行数据库调用以获取国家/地区名称列表以填充选择框。 现在,在我的Cucumber步骤定义文件中我有
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为具有硬编码选项值的选择框选择元素工作正常,但在上述情况下,使用数据库调用获取选项时,步骤定义失败。我该如何解决这个问题?
请帮助 谢谢
答案 0 :(得分:0)
CountryCode是ActiveRecord模型吗?如果是这样,数据库可能是空的,这可以解释为什么规范中没有出现任何值,但开发工作正常。
您可能希望在规范的挂钩中使用类似以下内容的方式存根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
确切的语法取决于您的存根库。