如何在测试 angular 页面时模拟 jquery ajax 调用
How to mock jquery ajax call while testing angular page
我正在使用 protractor 为我的 angular 页面编写 e2e 测试。
我使用 $httpBackend 模拟由 $http 发送的请求
但是在一个旧页面中,我发现 jquery ajax 来自通过 jquery ajax 发送调用的插件。
我注意到它不能被 $httpBackend
嘲笑
模拟这些东西的最佳解决方案是什么?
经过调查,我发现非常简单的方法来处理来自 angular 页面的 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
}
}
我正在使用 protractor 为我的 angular 页面编写 e2e 测试。 我使用 $httpBackend 模拟由 $http 发送的请求 但是在一个旧页面中,我发现 jquery ajax 来自通过 jquery ajax 发送调用的插件。 我注意到它不能被 $httpBackend
嘲笑模拟这些东西的最佳解决方案是什么?
经过调查,我发现非常简单的方法来处理来自 angular 页面的 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
}
}