【发布时间】:2012-03-07 19:36:33
【问题描述】:
免责声明:我仍然是 Rails/Cucumber 新手,但我正在努力学习。在阅读 RailsInAction 书籍并尝试编写自己的步骤时,我仍在使用 Cucumber 的“web_steps”。我明白他们为什么被带走,我会去那里的。
- 问题:
在我的一个 Cucumber 场景中,我正在填充一些数据并尝试使用这些数据来填充下拉列表。数据肯定是被插入的,我知道这一点是因为我写了一个步骤来测试数据是否确实存在。
然后假设填充 DropDown 并且我尝试从该 DropDown 中“选择”我收到错误“*无法选择选项,在选择框 'result_winner' (Capybara::ElementNotFound)* 中没有带有文本 'Steven' 的选项”
我确信我错过了一些基本的东西,但我现在已经浪费了大约一个小时,我需要一些帮助。
- 我的代码:
测试:
When I follow "Record new Result"
And the users "Steven, Joshua" exist
And I select "Steven" from "result_winner"
测试步骤:
When /^the users "([^"]*)" exist$/ do |playerNames|
@names = playerNames.scan(/[\w']+/)
for name in @names
@newPlayer = Player.new
@newPlayer.name = name
@newPlayer.save
end
end
然后查看_form.html.erb中的代码:
<p>
<%= f.label :winner %>
<%= select("result", "winner", @players.map {|p| [p.name, p.id]}) %>
</p>
控制器:
def new
@result = Result.new
@players = Player.find(:all)
end
如果我使用名称手动填充开发数据库并将其加载到浏览器中,下拉列表中会填充数据并且可以正常工作。我很确定我误解了测试数据何时/何地可见,或者如何测试并从下拉列表中选择数据。
任何帮助将不胜感激。
【问题讨论】:
标签: ruby-on-rails cucumber capybara