严格模式下 Angular 应用程序的 httpBackend 显式注解
httpBackend explicit annotation for Angular app in strict mode
我正在使用 Protractor 的 addMockModule
功能模拟一些请求数据,但目标 Angular 应用处于严格模式时遇到问题。
这是错误:
Failed: unknown error: [$injector:strictdi] function($httpBackend) is not using explicit annotation and cannot be invoked in strict mode
这是代码:
var httpBackendMock = function() {
angular.module('httpBackendMock', ['my-app', 'ngMockE2E'])
.run(function($httpBackend){
var expected_response = {"limit": 1}
$httpBackend.whenGET(/homepage/).respond(function() {
return [200, expected_response];
});
$httpBackend.whenGET(/.*/).passThrough();
});
};
browser.addMockModule('httpBackendMock', httpBackendMock);
有什么方法可以在 Angular 的上下文中显式注入 $httpBackend 吗?
尝试为您的 运行 块显式提供依赖项:
.run(['$httpBackend', function($httpBackend) {
// ^^^ - inject explicitly
}]);
这基本上就是严格模式背后的想法,它强制您显式设置注入 (docs)。
替代方法如下:
angular.module('app', []).run(runBlock);
runBlock.$inject = ['$httpBackend'];
function runBlock($httpBackend) {
// ...
}
我正在使用 Protractor 的 addMockModule
功能模拟一些请求数据,但目标 Angular 应用处于严格模式时遇到问题。
这是错误:
Failed: unknown error: [$injector:strictdi] function($httpBackend) is not using explicit annotation and cannot be invoked in strict mode
这是代码:
var httpBackendMock = function() {
angular.module('httpBackendMock', ['my-app', 'ngMockE2E'])
.run(function($httpBackend){
var expected_response = {"limit": 1}
$httpBackend.whenGET(/homepage/).respond(function() {
return [200, expected_response];
});
$httpBackend.whenGET(/.*/).passThrough();
});
};
browser.addMockModule('httpBackendMock', httpBackendMock);
有什么方法可以在 Angular 的上下文中显式注入 $httpBackend 吗?
尝试为您的 运行 块显式提供依赖项:
.run(['$httpBackend', function($httpBackend) {
// ^^^ - inject explicitly
}]);
这基本上就是严格模式背后的想法,它强制您显式设置注入 (docs)。
替代方法如下:
angular.module('app', []).run(runBlock);
runBlock.$inject = ['$httpBackend'];
function runBlock($httpBackend) {
// ...
}