6

我想知道是否有人测试由茧动态添加的字段?

这可以节省大量时间,但所有动态添加的字段都在 ID 和名称中添加了非常长的数字。这意味着我必须跳过页面上需要多个(一组)字段的测试。

4

5 回答 5

8

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 

所以通常你给它一个类,我通常只是测试页面上元素的数量。

所以如果一个元素已经存在,创建一个新元素,计数应该是两个。你可以用这个来测试

 find("#tasks .nested-fields").count.should == 2

填充新添加的嵌套元素,您可以使用:last-childcss 选择器

 find("#tasks .nested-fields:last-child input#description").set("something")

名称和 ID 是如何形成的,接近 Rails 内部,所以我尽量远离这些。

于 2014-04-21T11:21:38.673 回答
4

也许首先使用Capybara 查找器和选择器输入。像这样的东西:

visit new_resource_path
click_link "Add a Nested Resource"
first("input[name='nested_resource[name]']").set("Nested Resource")
click_button "submit"

或者

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

这只是一种方法,我从未使用过茧。然而,这是一种测试动态输入的形式。

于 2014-04-20T19:50:37.530 回答
1

奇怪的。

我有以下形式(haml):

= link_to_add_association f, :staff_phases, class: :button, id: 'add-staff-phase-link' do
  %i.fas.fa-plus

在我的测试中

click_link 'add-staff-phase-link'
save_and_open_page

作品,click_link但我看不到任何附加的关联。如果我,然后在打开的页面上,用鼠标单击链接,茧链接工作并添加一个关联

于 2021-07-17T20:52:31.733 回答
1

这可能是常识,但在处理需要选择而不是文本输入的嵌套属性时,分享它对我有用。我找到我的选择字段的所有实例,然后选择我想要使用我的首选选项更新的选择字段,如下所示:

page.find_all('select[id^="model_model_nested_attributes_"]')[2].select("preferred_option")

于 2021-08-15T04:30:12.097 回答
0

我刚刚使用的一个可能的替代方法是动态更新每个添加的表单字段的标签(使用https://github.com/nathanvda/cocoon/issues/374中提到的技术),现在我的 Cucumber/Capybara 测试可以轻松插入文本到不同的多个表单字段中,通过它们具有的不同标签来区分它们。

我在此 PR 中所做的全部详细信息https://github.com/AgileVentures/WebsiteOne/pull/1818

于 2017-09-22T09:30:35.773 回答