Javascript 如何将Jasmine中的angular引导到单元测试在引导后添加指令/控制器
我正试图弄清楚如何在Jasmine/Karma单元测试套件中应用angular.bootstrap,但我似乎无法将我的头脑集中在它上面 在angular.boostrap运行之后,我需要延迟加载一些组件(控制器、指令、服务等) 我看过Ben Nadel关于如何做到这一点的文章: 我可以让它正常工作 现在,我发现我想在Karma/Jasmine/PhantomJS中测试这个功能,并确保我的组件在引导后正常工作,但我不太确定如何创建设置并拆除它,以确保它已经被引导 我基本上已经发现,当我在测试中执行典型的angular.mock.module函数来检索我的模块时,我可以继续添加控制器/指令等,而事实上在Jasmine中很好,即使我没有按照Ben N.的指示重新布线模块,我也需要这样做,以便使其直接在浏览器中工作 下面是我的代码和测试的基本示例:Javascript 如何将Jasmine中的angular引导到单元测试在引导后添加指令/控制器,javascript,angularjs,unit-testing,jasmine,karma-runner,Javascript,Angularjs,Unit Testing,Jasmine,Karma Runner,我正试图弄清楚如何在Jasmine/Karma单元测试套件中应用angular.bootstrap,但我似乎无法将我的头脑集中在它上面 在angular.boostrap运行之后,我需要延迟加载一些组件(控制器、指令、服务等) 我看过Ben Nadel关于如何做到这一点的文章: 我可以让它正常工作 现在,我发现我想在Karma/Jasmine/PhantomJS中测试这个功能,并确保我的组件在引导后正常工作,但我不太确定如何创建设置并拆除它,以确保它已经被引导 我基本上已经发现,当我在测试中执
(function() {
'use strict';
var module = angular.module('myModule', []);
// it should not allow adding controllers after bootstrap with the following
// commented out:
//module.config(['$controllerProvider', function(controllerProvider) {
// module._controller = module.controller;
// module.controller = controller;
//
// function controller(name, constructor) {
// console.log(name, constructor);
// return controllerProvider.register(name, constructor);
// }
// }]);
}());
describe('lazy module', function() {
'use strict';
beforeEach(module('myModule'));
it('allows controllers to be added after bootstrap', function() {
angular.module('myModule').controller('mycontroller', [
'$scope',
function(vm) {
vm.add = function add() {
vm.sum = vm.a + vm.b;
}
}
]);
var $scope= {};
getController('mycontroller', {$scope:$scope});
$scope.a = 5;
$scope.b = 7;
$scope.add();
expect($scope.sum).toBe(12);
});
function getController(name, model){
var controller = null;
inject(function(_$controller_){
controller = _$controller_(name, model);
});
return controller;
}
});
除非我完全忽略了一些明显的东西,否则这个测试应该失败,但它不会
我不知道如何在Jasmine中连接东西,使其表现为模块已经启动。添加以下内容似乎没有什么不同
angular.boostrap(document, ['myModule']);
警告此问题。警告此问题。