Afaik 你可以测试两件事:
- 嵌套元素的动态添加有效
- 创建元素,填充元素并将其存储在数据库中
因此,假设您的视图的相关部分如下所示(默认示例):
#tasks
= f.semantic_fields_for :tasks do |task|
= render 'task_fields', :f => task
.links
= link_to_add_association 'add task', f, :tasks
你的嵌套元素看起来像
.nested-fields
= f.input :description
= f.input :done, :as => :boolean
= link_to_remove_association "remove task", f
所以通常你给它一个类,我通常只是测试页面上元素的数量。
因此,如果一个元素已经存在,则创建一个新元素,计数应该为 2。你可以用这个来测试
find("#tasks .nested-fields").count.should == 2
填充新添加的嵌套元素,您可以使用:last-child
CSS选择器
find("#tasks .nested-fields:last-child input#description").set("something")
名称和 id 的形成方式与 Rails 内部结构很接近,因此我尽量避免使用这些内容。