我正在使用带有cocoon gem的nested_attributes表单的Rails 4。这允许添加开箱即用链接以添加新元素或从主类中删除它。
问题是这个gem在创建新表单时没有为表单提供唯一标识符。我正在尝试使用Rspec,capybara和poltergeist来测试它。
想象一下这个例子我有一篇文章,其中包含许多图片以及用于创建它的表单的相应视图! here => https://gist.github.com/andreorvalho/5141c667a80be72edd5e 这里=> https://gist.github.com/andreorvalho/ca52e823a4930dac1a3c
测试失败并带有以下内容:
Failures:
1) Article Admin creates a new article with more than one image
Failure/Error: within_fieldset("image") do
Capybara::Ambiguous:
Ambiguous match, found 2 elements matching fieldset "image"
# ./spec/features/article_spec.rb:90:in `block (2 levels) in <top (required)>'
# -e:1:in `<main>'
显然这是因为我给他们的身份证是相同的,并且有两种形式,而水豚也无法区分它们,但有人知道我该怎么办吗?
cocoon是否为此实现了一些功能?
你知道其他任何有意义的测试方法吗?
提前致谢
答案 0 :(得分:1)
我最终找到了解决方法:
within(all(:xpath, '//fieldset#image')[0]) do
attach_file 'Image', test_image_path
fill_in "Title", with: "My Article Image"
fill_in "Description", with: "My Article Image Description"
fill_in "Copyright", with: "My Article Image Copyright"
end
all函数返回一个包含所有xpath的数组,然后你可以用它来迭代它。