如何在Capybara中测试页面是否*没有重新加载(JavaScript onClick intercept有效)?

Mat*_*son 5 javascript ajax cucumber capybara poltergeist

我正在使用Capybara,Cucumber和Poltergeist.我正在测试一个附加到表单提交按钮的JavaScript函数,该函数用于捕获提交事件并阻止它(在后台执行AJAX请求).无论是否使用AJAX,页面最终都会看起来相同,但AJAX方法更快,不会中断浏览体验等.

我可以做些什么来测试表单确实没有提交,并且更改是动态AJAX调用而不是重新加载的结果?

Tim*_*ore 0

Capybara 旨在用于用户级功能测试。没有一种简单的方法可以测试实现细节,例如表单是否使用 AJAX 还是传统的表单提交。它鼓励您根据最终用户体验编写测试。

您可以执行以下几项操作:

  • Capybara 支持查找器和断言的等待时间。有几种方法可以设置它,使用Capybara.default_wait_timeCapybara.using_wait_time或将wait选项传递给断言方法。如果您设置较短的等待时间,则可以确保单击提交按钮的结果会快速返回。

  • 研究 JavaScript 单元和集成测试框架,例如Jasmine。这可用于测试设置事件绑定和 AJAX 调用的 JavaScript 代码。您可以使用间谍来确保单击按钮时进行预期的 AJAX 调用。