Daz*_*win 6 rspec ruby-on-rails capybara cocoon-gem
我想知道是否有人测试由cocoon动态添加的字段?
这是一个很好的节省时间,但动态添加的所有字段都有很长的数字添加到ID和名称.这意味着我必须跳过在页面上需要多个(一组)字段的测试.
Afaik你可以测试两件事:
因此,假设视图的相关部分如下所示(默认示例):
#tasks
= f.semantic_fields_for :tasks do |task|
= render 'task_fields', :f => task
.links
= link_to_add_association 'add task', f, :tasks
Run Code Online (Sandbox Code Playgroud)
你的嵌套元素看起来像
.nested-fields
= f.input :description
= f.input :done, :as => :boolean
= link_to_remove_association "remove task", f
Run Code Online (Sandbox Code Playgroud)
所以通常你给它一个类,我通常只是测试页面上元素的数量.
因此,如果一个元素已经存在,创建一个新元素,则计数应为2.你可以测试一下
find("#tasks .nested-fields").count.should == 2
Run Code Online (Sandbox Code Playgroud)
填写新添加的嵌套元素,您可以使用:last-childcss选择器
find("#tasks .nested-fields:last-child input#description").set("something")
Run Code Online (Sandbox Code Playgroud)
如何形成名称和id,靠近rails内部,所以我试图远离那些.
也许首先使用水豚查找器和选择器输入。像这样的东西:
visit new_resource_path
click_link "Add a Nested Resource"
first("input[name='nested_resource[name]']").set("Nested Resource")
click_button "submit"
Run Code Online (Sandbox Code Playgroud)
或者
visit new_resource_path
click_link "Add a Nested Resource"
click_link "Add a Nested resource"
all("input[name='nested_resource[name]']").each do |input|
input.set("Nested Resource")
end
click_button "submit
Run Code Online (Sandbox Code Playgroud)
这只是一种方法,我从未使用过 cocoon。然而,这是一种测试动态输入的形式。
| 归档时间: |
|
| 查看次数: |
2822 次 |
| 最近记录: |