Javascript 茉莉花&x2B;因果报应+;角度测试创建控制器
我哪里出错了?如何获得Jasmine+angular中的控制器实例?如何解析控制器?我不知道应该用什么来解决这个问题Javascript 茉莉花&x2B;因果报应+;角度测试创建控制器,javascript,angularjs,jasmine,karma-jasmine,Javascript,Angularjs,Jasmine,Karma Jasmine,我哪里出错了?如何获得Jasmine+angular中的控制器实例?如何解析控制器?我不知道应该用什么来解决这个问题 'use strict'; angular.module('myApp.contact', ['ui.router']) .controller('contactCtrl', ['$scope', function ($scope) { $scope.contact = { name: 'John Doe' }; }]); describe(
'use strict';
angular.module('myApp.contact', ['ui.router'])
.controller('contactCtrl', ['$scope', function ($scope) {
$scope.contact = {
name: 'John Doe'
};
}]);
describe('myApp.contact module tests', function () {
var scope, createController;
beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
createController = function () {
return $controller('contactCtrl', {
'$scope': scope
});
};
}));
it('contact name is John Doe', function () {
var controller = createController();
expect(controller).toEqual('John Doe');
});
});
myApp.contact module tests
✗ contact name is John Doe
Error: [ng:areq] Argument 'contactCtrl' is not a function, got undefined
http://errors.angularjs.org/1.4.9/ng/areq?p0=contactCtrl&p1=not%20a%20function%2C%20got%20undefined
at E:/angular-seed/app/bower_components/angular/angular.js:68:12
at assertArg (E:/angular-seed/app/bower_components/angular/angular.js:1816:11)
at assertArgFn (E:/angular-seed/app/bower_components/angular/angular.js:1826:3)
你在这里错过了好几件事
模块('myApp.contact')
,以便错误:[ng:areq]参数“contactCtrl”不是函数,未定义的将消失
范围
对象而不是控制器
(当您的属性绑定到此
时,您可以使用控制器)contactCtrl.js
和ui-router.js
expect(scope.contact.name).toEqual('John Doe');
describe('myApp.contact module tests', function () {
var scope, createController;
beforeEach(module('myApp.contact')); //1st change
beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
createController = function () {
return $controller('contactCtrl', {
'$scope': scope
});
};
}));
it('contact name is John Doe', function () {
var controller = createController();
expect(scope.contact.name).toEqual('John Doe'); //2nd change
});
});
模块(myApp.contact);表示myApp未定义,我尝试将其更改为模块('myApp.contact');错误:喷油器已创建,无法注册模块!在karma.conf.js中,我有所有文件included@PeterPan用单引号包装,我错过了第一次包装,但抛出:错误:注入器已经创建,无法注册模块@PeterPan之所以发生这种情况,是因为我们在每个之前的
内部使用函数inject()
,在模块初始化之前,我们应该先加载角度模块。好的,我该怎么做?