茉莉花+业力+角度测试创建控制器
Jasmine + karma + angular test create controller
我哪里犯了错误?如何获取茉莉花+角度控制器的实例?如何解析控制器?我不知道我应该用什么来解决这个问题。
'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)
你在这里错过了几件事
- 您需要初始化角度模块,以使控制器和所有其他组件可用,方法是在每个组件之前执行
module('myApp.contact')
,以便Error: [ng:areq] Argument 'contactCtrl' is not a function, got undefined
消失。 - 然后在 Assert 测试语句中,您应该使用对象而不是
controller
scope
(当您的属性绑定到this
时,您可以使用控制器) -
不要忘记在页面上引用
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
});
});
相关文章:
- 在控制器中创建StandardListItem并在赢得的项目上按下事件'不要开火
- 阻止控制器创建新的作用域对象
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- 如何将从jQuery创建的数组传递给控制器方法
- 如何从控制器创建进度条来处理MVC3中的长流程
- 角度指令和属性Don'在控制器内创建和设置时无法工作
- 使用双向绑定将对象从角度视图动态添加/创建到控制器的数组
- 每次使用角度控制器都会创建一个新的if实例
- 使用angular.module创建控制器有什么好处(如果有的话)
- 如何创建可以使用 AngularJS 上的控制器访问的帮助程序类
- 创建通用控制器功能
- 茉莉花+业力+角度测试创建控制器
- $resolve在创建控制器之前不会添加到$scope
- 如何在 Ember.ContainerView 中为 View 创建控制器
- 推迟在应用程序运行angularjs上创建控制器/服务
- 在ng视图页面中创建控制器
- 使用angular.js在单独的文件夹中创建控制器文件
- AngularJS-创建控制器之间的区别
- Angular 是否有创建控制器时的事件
- AngularJS——创建控制器和服务的不同方式,为什么?