改变事件不会被恶作剧者触发

时间:2015-10-20 09:27:29

标签: backbone.js capybara poltergeist rspec3

我有2个下拉菜单,并且在第一个上午更改预先填充第二个下拉菜单(已在骨干网中完成)。

  events: ->
    'change #client_id': 'selectedClientChange'

  selectedClientChange: (ev) ->
    @populateGroups $(ev.target.selectedOptions).val()

与恶作剧者一起编写的水豚规格,但由于某些原因而没有触发改变事件,并且规格失败。

scenario 'it should populate the groups automatically', js: true, speed: :slow do
  click_link 'New Item'
  find('#name').set('Sample Item')
  page.execute_script("$('#client_id').val('testing').trigger('change')")
  select "#{client.name}", from: "client_id"
  groups = find('#group_id').all('option').collect(&:text)
  expect(groups.count).to eq 1
  expect(groups).to include pg.name
end

有人可以告诉我如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

如果没有关于错误的详细信息,那么这主要是猜测 - 您可能会在更改事件之前从select实际更新它们之前获取组。您最好使用has_select匹配器,因为它会重试一段时间以查看字段是否更改以符合要求

select "#{client.name}", from: "client_id"
expect(page).to have_select('group_id', options: [pg.name])

答案 1 :(得分:0)

对不起大家。我发现我在这里https://github.com/teampoltergeist/poltergeist/issues/204找到了一个关于吵闹的问题。非常感谢!