如何测试用module().controller创建的angularjs控制器?
How can I test angularjs controllers that have been created with module().controller?
对于这个问题,我有一个angular JS控制器定义如下:
function TestController($scope) {
$scope.name = 'eric';
}
使用我的正常node/karma/jasmine设置(在phantom, chrome, canary, firefox和safari中测试)可以正常测试:
describe('TestSquaredController', function(){
beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
scope = $rootScope.$new();
ctrl = $controller('TestController', {$scope: scope});
}));
it('should be called eric', function() {
expect(scope.name).toEqual('eric');
});
});
然而,当我使用angular模块时。控制器注册控制器的方式,我得到一个错误Error: Argument 'TestController' is not a function, got undefined
时使用相同的测试。
。
app.module('testAngularApp')
.controller('TestController', function($scope) {
$scope.test = 'eric';
});
我似乎找不到任何与此相关的东西!还有什么我应该初始化/做在我的测试?
用同样的方法测试它们。确保你在测试中通过ngMock模块中的模块函数加载了带有控制器的模块。像这样:
beforeEach(module('testAngularApp'));
我有同样的问题,在运行我们的Jasmine规范时得到相同的错误。
首先,我们尝试改变包含的顺序,就像上面的答案一样,但这并没有解决这个问题。
然后我们发现我们在应用程序的多个地方初始化了我们的模块,使用了初始化器var app = angular.module('testAngularApp', [])
放在所有控制器js文件的顶部,而我们只需要初始化它一次,然后用
将它包含在控制器js文件的顶部var app = angular.module('testAngularApp)
也许你也做过类似的事情?或者在第一种情况下没有正确初始化它?只是一个想法,以防你没能解决你的问题。
相关文章:
- 在控制器中创建StandardListItem并在赢得的项目上按下事件'不要开火
- 阻止控制器创建新的作用域对象
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- 如何将从jQuery创建的数组传递给控制器方法
- 如何从控制器创建进度条来处理MVC3中的长流程
- 角度指令和属性Don'在控制器内创建和设置时无法工作
- 使用双向绑定将对象从角度视图动态添加/创建到控制器的数组
- 每次使用角度控制器都会创建一个新的if实例
- 使用angular.module创建控制器有什么好处(如果有的话)
- 如何创建可以使用 AngularJS 上的控制器访问的帮助程序类
- 创建通用控制器功能
- 茉莉花+业力+角度测试创建控制器
- $resolve在创建控制器之前不会添加到$scope
- 如何在 Ember.ContainerView 中为 View 创建控制器
- 推迟在应用程序运行angularjs上创建控制器/服务
- 在ng视图页面中创建控制器
- 使用angular.js在单独的文件夹中创建控制器文件
- AngularJS-创建控制器之间的区别
- Angular 是否有创建控制器时的事件
- AngularJS——创建控制器和服务的不同方式,为什么?