我不想嘲笑$ http。主要原因是我正在编写一些集成测试,所以我想执行所有AJAX请求。目前在我的测试中没有任何触发。
任何建议都值得欢迎。
最佳答案
当您使用Jasmine测试时,角度模拟会提供模拟的$ httpBackend,但是实际的$ httpBackend仍然存在。您只需要在注入服务时告诉提供商使用原始文件即可。在您的测试中,它将看起来像这样:
var original_http_backend = null;
angular.module('ng').config(['$httpBackendProvider', function($httpBackendProvider) {
original_http_backend = $httpBackendProvider;
}]);
beforeEach(module(function($provide) {
$provide.provider('$httpBackend', original_http_backend)
}));
还值得指出的是,这种方法通常是测试前端代码的一种不好的方法。这是因为它添加了后端依赖性,因此您无法隔离前端行为。最好模拟出响应并进行测试。
但是,我的确使用了此功能,因为我们的模拟响应是在后端开发的,可以在那里进行测试,而我不想重复这些对象。这种方法使我可以使用它们。