我正在测试一个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
为什么这不起作用的任何想法? 谢谢!
答案 0 :(得分:2)
have_checked_field
获取复选框元素的ID,名称或关联标签文本 - 它不会选择CSS选择器。如果您没有要使用的ID,名称或标签文本,并且只有一个项目包含task-completed
类,那么您应该能够重写您的期望
expect(page).to have_css('.task-completed:checked')