【问题标题】:How to mock jquery ajax call while testing angular page如何在测试角度页面时模拟 jquery ajax 调用
【发布时间】:2015-01-09 12:22:10
【问题描述】:
我正在使用 protractor 为我的 Angular 页面编写 e2e 测试。
我使用 $httpBackend 来模拟 $http 发送的请求
但是在一个旧页面中,我发现了 jquery ajaxFrom 插件,它通过 jquery ajax 发送调用。
我注意到它不能被 $httpBackend 模拟
模拟这些东西的最佳解决方案是什么?
【问题讨论】:
标签:
jquery
angularjs
ajaxform
httpbackend
e2e-testing
【解决方案1】:
经过调查,我发现处理来自角度页面的 jquery ajax 调用的非常简单的方法(由 jquery ajaxForm 插件制作)
在我们的测试规范中,我只是把
browser.executeScript( '$.fn.ajaxForm = function(form){return{submit: function(){form.success([{result: "ok"}]);}}}' );
所以我以这种方式模拟了 jquery ajaxForm 插件发送的请求。
同样我们可以模拟原生 JS XMLHTTPRequest 对象
window.XMLHttpRequest = function(){
return{
send: function(){return true;},
open: function(){return true;},
status: 200,
responseText: '{result: "ok"}',
getAllResponseHeaders: function(){return true;},
readyState: 4
}
}