【问题标题】:Action cable, ReactJS update fails Capybara spec动作电缆,ReactJS 更新失败 Capybara 规范
【发布时间】:2016-05-18 08:35:28
【问题描述】:

我正在测试一个 Rails 5,它几乎对每个请求都使用动作电缆。 UI 使用使用 JSON 对象更新的 reactjs 组件。

当我编写一个更新列表的测试时,它无法断言它已在视觉上更新,即使我可以断言数据库已更新。如果我手动测试(点击测试)一切正常。

这是我的代码示例:

https://github.com/instatodo/instatodo/blob/master/spec/features/todos_spec.rb

描述“更新任务完成状态”做 {之前访问 todo_path(todo_with_tasks) }

it "modifies task state" do
  within first(".task") do
    find(".task-completed").click
    sleep 1
    expect(page).to have_checked_field(".task-completed") # This fails
  end
  expect(Task.where(completed: true)).not_to be_nil # This passes
end

结束

以及反应组件:

https://github.com/instatodo/instatodo/blob/master/app/assets/javascripts/components/task.jsx

关于为什么这不起作用的任何想法? 谢谢!

【问题讨论】:

    标签: reactjs capybara ruby-on-rails-5 actioncable


    【解决方案1】:

    have_checked_field 采用复选框元素的 id、名称或相关标签文本 - 它不采用 CSS 选择器。如果您没有要使用的 id、名称或标签文本,并且只有一个带有 task-completed 类的项目,那么您应该能够将您的期望重写为

    expect(page).to have_css('.task-completed:checked')
    

    【讨论】:

    • 感谢汤姆的解释!这工作得很好
    猜你喜欢
    • 2016-04-02
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2016-11-23
    • 2016-08-04
    相关资源
    最近更新 更多