验收测试侧重于传出的http请求

时间:2016-05-09 03:04:37

标签: javascript ajax selenium testing automated-tests

这似乎是一个奇怪的问题,因为我没有看到任何在线讨论或教程,所以我假设人们通常不会这样做 - 但是当接受标准时,是否有任何好的自动验收测试选项是由于特定用户交互而由Web应用程序发送的特定网络请求?作为最简单的示例,用户单击按钮,页面上的javascript代码发送ajax请求。 QA团队希望确定请求确实已发送,并且它具有特定参数。现在,一个典型的解决方案是完全忽略网络请求,而是检查由此类请求引起的接口更改,但是如果请求不会立即产生接口更改,该怎么办?另一种典型方法是将此类测试移至单元测试或集成测试级别 - 但如果QA更愿意在真实浏览器中工作,那该怎么办呢。

那么编写自动验收测试的选项是什么,这些测试从浏览器中的某些用户交互开始,然后断言已发送预期的网络请求?这种测试需要什么工具(据我所知,Selenium不能自行完成)?您是否知道此类测试的任何可用示例(已实现该测试的开源项目,描述如何执行此操作的教程等),或者您是否可以提供详细示例?

1 个答案:

答案 0 :(得分:1)

听起来你想要做的就是在测试中模拟来自前端应用程序的Ajax调用。现在使用SinonAngular's httpBackendjQuery Mockjax(我维护的库)这样的库很容易做到。

你可以在我前面写过的blog post中更多地阅读这个主题,但基本的想法是在它到达核心JavaScript XMLHttpRequest接口之前拦截Ajax请求(从而发送网络请求) 。在你的JS测试中,你可以检查拦截器,看看是否有网络请求,以及给它的内容。

如果不了解您的技术堆栈(JS框架,测试框架等),很难确切地说明如何设置它,但请看一下上面提到的工具。