Angularjs 不知道如何测试angular.bootstrap包装器
我正在为我们的代码编写单元测试,我有一些使用angular.bootstrap的功能,我不知道如何使用karma来测试它,因为那时它不是任何模块或任何东西的一部分Angularjs 不知道如何测试angular.bootstrap包装器,angularjs,unit-testing,testing,karma-jasmine,Angularjs,Unit Testing,Testing,Karma Jasmine,我正在为我们的代码编写单元测试,我有一些使用angular.bootstrap的功能,我不知道如何使用karma来测试它,因为那时它不是任何模块或任何东西的一部分 (function () { 'use strict'; function fetchData() { var initInjector = angular.injector(['ng']); var $http = initInjector.get('$http'); return $http.get
(function () {
'use strict';
function fetchData() {
var initInjector = angular.injector(['ng']);
var $http = initInjector.get('$http');
return $http.get('./app/config/app.config.json').then(function (response) {
angular.module('myModule').value('globalConfig', response.data);
return $http.get('./app/config/routes.config.json').then(function (response) {
angular.module('myModule').value('routesConfig', response.data);
}, function (errorResponse) {
// Handle error case
console.log('Error on loading routes:', errorResponse);
});
}, function (errorResponse) {
// Handle error case
console.log('Error on bootstrapping:', errorResponse);
});
}
function bootstrapApplication() {
angular.element(document).ready(function () {
angular.bootstrap(document, ['myModule']);
});
}
fetchData().then(bootstrapApplication);
}());
您可以重构该块,使其属于常规angular服务,从而使其可测试。例如(我假设您的呼叫可以并行运行): 然后,可以通过手动创建包含此模块的注入器来实现引导,而测试可以通过加载
myBootstrapModule
正常进行:
var injector = angular.injector(['ng', 'myBootstrapModule']);
var bootstrap = injector.get('bootstrap');
bootstrap('myModule').then(function() {
// bootstrap angular
});
var injector = angular.injector(['ng', 'myBootstrapModule']);
var bootstrap = injector.get('bootstrap');
bootstrap('myModule').then(function() {
// bootstrap angular
});