使用cocoon请求nested_attributes表单的规范

时间:2014-02-08 15:28:56

标签: ruby-on-rails rspec capybara nested-forms cocoon-gem

我正在使用带有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是否为此实现了一些功能?

你知道其他任何有意义的测试方法吗?

提前致谢

1 个答案:

答案 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的数组,然后你可以用它来迭代它。