动作电缆,ReactJS更新失败了Capybara规范

时间:2016-05-18 08:35:28

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

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

当我编写测试来更新列表时,它无法断言它是否会更新,即使我可以断言数据库已更新。如果我手动测试它(单击测试)一切正常。

这是我的代码示例:

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

描述“更新任务完成状态”     在{visit 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

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

1 个答案:

答案 0 :(得分:2)

have_checked_field获取复选框元素的ID,名称或关联标签文本 - 它不会选择CSS选择器。如果您没有要使用的ID,名称或标签文本,并且只有一个项目包含task-completed类,那么您应该能够重写您的期望

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