【发布时间】:2012-09-23 20:08:52
【问题描述】:
我有一个失败的 Rails 集成测试,我不知道为什么。我正在使用 Capybara 和 Selenium 作为驱动程序。
测试检查页面内容是否在 AJAX 调用发生后被删除。相关的操作是单击按钮,并且该按钮单击导致通过 jQuery remove() 调用删除页面的一部分。这是集成测试代码的近似值:
click_button("Remove stuff")
assert has_no_link?("This should be removed")
断言失败,暗示链接仍然存在。
我一直在阅读 Capybara,我知道您可以延长默认等待时间。我已经将它扩展到一个荒谬的值(20 秒),但断言仍然失败。
当我自己手动跟踪测试过程时,页面的 source 仍然显示内容,但 DOM 没有(通过查看 Firefox 的 DOM Inspector 并查找元素)。这是问题吗?我什至尝试在 Firefox 中运行测试时检查 DOM 以检查内容是否存在,但似乎不存在。
我不知道 Capybara 是如何找到这个不再存在于 DOM 中的链接的。 Capybara 是否检查源而不是 DOM 并在那里找到链接?如果是这样,我不知道如何修复此测试以确保测试通过。刷新页面可以解决问题,但这并不是用户会做的事情,所以我犹豫是否更改页面只是为了让测试通过......
希望有任何关于如何解决这个问题的建议。
谢谢!
【问题讨论】:
-
您终于找到解决问题的方法了吗?我有一个类似的,我想知道你是否可以帮助我。
-
不,很遗憾没有。我花了太多时间让那个单一的测试工作,所以我最终只是把它注释掉而不是修复它。抱歉,我无法提供更多帮助……在花了这么多时间之后,我没有精力深入研究!如果您弄明白了,请随时回答这个问题,我很乐意为您效劳!
-
您是否记得在您的 rspec 中包含
js: true?
标签: javascript jquery ruby-on-rails selenium capybara