我有一个失败的Rails集成测试,我不明白为什么。我使用硒水银作为司机。异步JavaScript的水豚一体化测试
在AJAX调用发生后,测试检查页面内容已被删除。相关的操作是单击一个按钮,并且该按钮单击会导致页面的一部分通过jQuery remove()
调用被删除。以下是集成测试代码的近似值:
click_button("Remove stuff")
assert has_no_link?("This should be removed")
断言失败,意味着链接仍然存在。
我一直在读水豚,我知道你可以延长默认的等待时间。我已经将它扩展到一个荒谬的价值(20秒),并且仍然断言失败。
当我手动按照测试过程我自己,在源页面仍显示的内容,但DOM不(通过查看Firefox的DOM查看和寻找的元素)。这是问题吗?我甚至尝试检查DOM ,而测试在Firefox中运行,以检查内容是否存在,并且看起来不是这样。
我不知道Capybara是如何找到这个不再存在于DOM中的链接的。 Capybara检查源代码而不是DOM并在那里找到链接?如果是这样,我不知道如何解决这个测试,以确保测试通过。刷新页面将解决问题,但这不完全是一个用户会做什么,所以我犹豫改变页面只是为了使测试通过...
会爱如何解决这个问题的任何建议。
谢谢!
你终于找到了解决问题的办法吗?我有一个类似的,我想知道你是否可以对我有任何帮助。 –
不幸的是,不幸的是没有。我花了太多时间让单个测试工作,所以我最终只是评论它而不是修复它。对不起,我无法提供更多的帮助......我已经花了很多时间,没有精力去深入探索!随意回答这个问题,如果你想出来,我会很乐意给你信用! – aardvarkk
您是否记得在您的rspec中包含'js:true'? – RubeOnRails