我刚开始使用Cucumber和Webrat,并且正在向现有的Rails应用程序添加功能规范。应用程序中的一页上有多种形式,表示构建新Character对象的不同方法。这是一个简化的示例:
<form id="adopt_character_form">
....
<input type="text" name="character[name]" id="character_name">
...
</form>
<form id="spawn_character_form">
....
<input type="text" name="character[name]" id="character_name">
...
</form>
如您所见,页面上(至少)有两个具有相同名称和ID的字段,尽管它们的格式不同,而且我无法在Webrat rdoc或源代码中找到指定特定字段的方法一。
我知道我可以更改其中之一的名称或id,但是这样做必须偏离Rails的命名约定,而我实际上不希望这样做。我也可以将表单放在不同的页面上,但是对工作流程的修改比我想做的要多。我也可以尝试将它们合并为更具模块化和动态性的单一形式,但是不得不对UI进行结构更改以仅支持给定的测试框架似乎有点可疑,而且可能并不总是可行的,而且我会需要JavaScript。
有什么方法可以在Webrat中指定这些字段之一,还是应该放弃并在另一个项目上尝试Cucumber?
最佳答案
您可以使用webrats within
方法
例如在黄瓜步骤文件中
#my_steps
Then /^I update character name with "([^\"]*)"$/ do |updated_character|
within '#adopt_character_form'
fill_in "character[name]", :with => updated_character
end
end
希望能有所帮助