我正在为我的项目使用角度主题与Angular,我正在使用jasmine框架对此进行单元测试。但是当我运行测试用例时,它会出现" Argument' controller'不是一个功能,未定义"。这是我的test.js文件....
describe('registrationController',function(){
beforeEach(module('appTesting'));
var $controller;
beforeEach(inject(function(_$controller_){
$controller = _$controller_;
}));
it('Check Working Or Not', function() {
var $scope = {};
var controller = $controller('registrationController', { $scope: $scope });
$scope.password = 'passwordlength';
$scope.grade();
expect($scope.strength).toEqual('strong');
});
});
错误 -
Error: [ng:areq] Argument 'registrationController' is not a function, got undefined http://errors.angularjs.org/1.3.10/ng/areq?p0=registrationController&p1=not%20a%20function%2C%20got%20undefined
不,我正在使用业力来运行茉莉花。
我在这里定义我的模块
var App = angular.module('appTesting', ['ngRoute', 'ngAnimate', 'ngStorage', 'ngCookies', 'pascalprecht.translate', 'ui.bootstrap', 'ui.router', 'oc.lazyLoad', 'cfp.loadingBar', 'ngSanitize', 'ngResource'])
.run(["$rootScope", "$state", "$stateParams", '$window', '$templateCache', function ($rootScope, $state, $stateParams, $window, $templateCache, $location) {
// Set reference to access them from any scope
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
$rootScope.$storage = $window.localStorage;
}
]);
App.config(['$stateProvider','$urlRouterProvider', '$controllerProvider', '$compileProvider', '$filterProvider', '$provide', '$ocLazyLoadProvider', 'APP_REQUIRES', 'RouteHelpersProvider',
function ($stateProvider, $urlRouterProvider, $controllerProvider, $compileProvider, $filterProvider, $provide, $ocLazyLoadProvider, appRequires, helper) {
'use strict';
App.controller = $controllerProvider.register;
App.directive = $compileProvider.directive;
App.filter = $filterProvider.register;
App.factory = $provide.factory;
App.service = $provide.service;
App.constant = $provide.constant;
App.value = $provide.value;
$stateProvider
.state('app.registrationState', {
url: '/registration',
title: 'Ragistration Page',
templateUrl: helper.basepath('registrationPage.html'),
resolve: helper.resolveFor('registrationController','angularFileUpload')
})
}])
.controller('NullController', function() {});
App.constant('APP_REQUIRES', {
scripts:
{
'registrationController' :['app/js/registrationcontroller.js'],
}
});
答案 0 :(得分:1)
可以找到控制器吗?
registrationController
的控制器吗?appTesting
的模块中?您的应用中应该有以下代码:
angular.module("appTesting").controller("registrationController", ...);
如果您使用的是Karma-jasmine:
registration-controller.js
中包含了定义控制器(karma.conf.js
)的文件?karma.conf.js
module.exports = function(config) {config.set({
files : [
'src/registration-controller.js',
...
],
...
});};
如果您不使用Karma运行Jasmine,我假设您正在使用Jasmine测试运行器(HTML文件)。在那种情况下:
您需要包含控制器的脚本:
<head>
...
<script type="text/javascript" src="src/registration-controller.js"></script>
...
</head>
答案 1 :(得分:0)
由于定义了控制器的源代码错误,无法找到或未创建控制器。
在我的情况下,这是由于一个错误导致控制器未加载的错误导致控制器未加载。
答案 2 :(得分:0)
这可能由于各种原因而发生。
- &GT;控制器名称未被引用 - &GT;由于某些错误,未创建控制器。
就我而言,我的控制器名称在
中不匹配directive:
.controller('IAddController', AddController)
Jasmine spec.ts:
// Instantiate controller
addController= $controller<any>('AddController', {*