我有一个失败的 Rails 集成测试,我不知道为什么。我正在使用 Capybara 和 Selenium 作为驱动程序。
该测试检查页面内容是否在 AJAX 调用发生后被删除。相关的操作是单击按钮,并且该按钮单击会导致页面的一部分通过 jQueryremove()
调用被删除。这是集成测试代码的近似值:
click_button("Remove stuff")
assert has_no_link?("This should be removed")
断言失败,意味着链接仍然存在。
我一直在阅读 Capybara,我知道您可以延长默认等待时间。我已经将它扩展到一个荒谬的值(20 秒),但断言仍然失败。
当我自己手动执行测试过程时,页面源仍然显示内容,但DOM没有(通过查看 Firefox 的 DOM Inspector 并查找元素)。这是问题吗?我什至尝试在 Firefox 中运行测试时检查 DOM以检查内容是否存在,但似乎不存在。
我不知道 Capybara 是如何找到这个不再存在于 DOM 中的链接的。Capybara 是否检查源而不是 DOM 并在那里找到链接?如果是这样,我不知道如何修复此测试以确保测试通过。刷新页面可以解决问题,但这并不是用户会做的事情,所以我犹豫是否要更改页面只是为了让测试通过......
希望有任何关于如何解决这个问题的建议。
谢谢!