为什么我的Javascript依赖功能规范在不在Javascript模式时传递?

时间:2014-04-20 23:07:57

标签: ruby-on-rails ruby rspec capybara capybara-webkit

我有使用capybara / capybara-webkit的非Javascript规范和Javascript功能规范。

我有一些测试,我希望在非Javascript模式下失败,但他们正在通过。我在浏览器中尝试了关闭Javascript的功能,但功能确实无法按预期工作。但是在Capybara,它有效。

我还尝试将js: false添加到单个测试中,以确保我的配置中没有隐藏的内容将其打开。规范仍然通过。

我的Gemfile中没有包含selenium gem。

1 个答案:

答案 0 :(得分:2)

我看到两种可能性:你的测试是正确的,但可能有一些原因导致它们意外通过,或者你的测试不正确,并且当你在Javascript中运行时它们传递的原因是错误的。

有关如何调试的一些建议适用于这两种可能性:

  • 使用调试器。 (如果有,请告诉我们您的学习内容。)

  • 从规范的单个运行中查看Rails日志,以查看调用的控制器操作以及调用顺序。

  • 使用save_and_open_page对您的网页进行快照,看看您的规范是否应传递您所查看的内容。

使用Javascript运行时仔细检查您的测试:

  • 使用the poltergeist driver而不是capybara-webkit驱动程序运行它们。它提供了比capybara-webkit和can be configured报告Javascript错误消息更好的错误消息。

  • 使用save_screenshot获取页面的实际屏幕截图,并验证规范是否因虚假原因而未通过,可能是因为某些内容不在屏幕上。

如果您想确定rspec是否正在运行Javascript,请使用ps查看是否正在运行capybara-webkit或phantomjs进程。