Angularjs 不知道如何测试angular.bootstrap包装器

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

我正在为我们的代码编写单元测试,我有一些使用angular.bootstrap的功能,我不知道如何使用karma来测试它,因为那时它不是任何模块或任何东西的一部分

(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
});