在Jasmine测试中访问控制器的范围
Accessing Scope of controller withing a Jasmine Test
我正在尝试使用Jasmine调用一个Angular Controller方法。我已经写了以下控制器
angular.module('oide.filebrowser')
.controller('FilebrowserController', ['FBFiletreeService', '$rootScope', 'FileService', '$scope', 'FilesystemService', '$modal', function(FiletreeService, $rootScope, FileService, $scope, FilesystemService, $modal){
var self = this;
self.formDirPath = function(){
// Do something...
return "/home/saurabh";
};
})]);
现在,我正在尝试使用Jasmine在作用域上运行formDirPath
方法,并使用Karma运行测试。我已经写了以下测试
describe('Filebrowser', function() {
var scope;
var controller;
beforeEach(module('oide.filebrowser'));
describe('FilebrowserController Test', function() {
beforeEach(inject(function($controller, $rootScope, $httpBackend, $http){
scope = $rootScope.$new();
controller = $controller(
'FilebrowserController as ctrl', {
$scope: scope
});
}));
it('should form a correct current dir path', function(){
expect(scope.formDirPath()).toBe('/home/saurabh');
});
});
});
我得到一个错误方法说
"undefined"不是函数(正在评估"scope.formDirPath()")
我是不是做错了什么?我尝试引用以下链接,但对我不起作用:如何将范围变量与";控制器为";Jasmine中的语法?
调用Karma和Jasmine测试的控制器函数
了解问题。这是控制器的语法。更改
expect(scope.formDirPath()).toBe('/home/saurabh');
至
expect(scope.ctrl.formDirPath()).toBe('/home/saurabh');
修复
formDirPath是控制器的一个函数。
尝试:expect(controller.formDirPath()).toBe('/home/saurabh');
相关文章:
- AngularJS控制器范围
- FileReader加载不在控制器范围Angular 2内
- Angular ES6控制器范围
- 离子单选按钮-控制器范围无法识别更改
- Angular:控制器范围内的可重用功能
- 角度嵌入和访问控制器范围
- 如何从 ng-repeat(ng-repeat)中的指令访问控制器范围
- 如何在Angular JS的这个小游戏中将对象同步到控制器范围
- AngularJS - 访问 Web 应用中的顶级控制器范围
- 应用程序的主控制器范围
- 设置另一个控制器范围变量而不使用 angular.element (Angularjs)
- 如何根据信号器请求的结果设置控制器范围
- 角度控制器范围项作为范围函数的子项
- 在 angularjs 控制器范围内声明函数和属性,但不附加到$scope
- AngularJS 控制器范围问题
- 理解angularJS中的控制器范围
- 如何将项目列表从创建许多选择标记的指令添加到控制器范围
- Angularjs:如何在指令中访问控制器范围
- 当使用Konacha进行测试时,Ember无法在didLoad回调中访问控制器范围
- 最好的做法是从出厂功能设置控制器范围变量