1
我正在尝试使用Grails后端的Angular应用程序,并且在开始使用它之前,我正在对控制器进行单元测试,以查看它是否存在。不幸的是,它给我以下错误:角度控制器未在单元测试期间注册
[$controller:ctrlreg] The controller with the name 'SecurityController' is not registered.
这里是我的单元测试代码:
import angular from 'angular';
import 'angular-mocks';
import worldManagerApp from '../../src/world-manager-app';
import security from '../../src/security/security';
const {inject, module} = angular.mock;
describe('SecurityController',() => {
let $state;
let vm;
beforeEach(module(worldManagerApp));
beforeEach(module(security));
beforeEach(inject((_$state_, $controller) => {
$state = _$state_;
spyOn($state, 'go');
vm = $controller('SecurityController', {
});
}));
it('should be registered',() => {
expect(vm).toBeDefined();
});
});
这里是控制器代码:
function SecurityController(){
'ngInject';
const vm = this;
vm.security = "secure";
}
export default SecurityController;
这里是模块代码,为好措施:
import angular from 'angular';
import uiRouter from 'angular-ui-router';
import SecurityController from './securityController'
import SignUp from './services/signUpService';
import AuthenticationService from './services/authService'
const security = angular.module('security', [
uiRouter,
]).controller(SecurityController)
.service(SignUp)
.service(AuthenticationService);
export default security.name;
安全模块被修补到我的主应用模块中,所以我也可以提供。我已阅读了一些关于此的资源,但迄今为止,我尝试过的任何内容都特别有用。
在此先感谢!
这看起来比AngularJS更像Angular2。例如,我从来没有在AngularJS中看到'ngInject'的语法。 –
@MikeMcCaughan,这实际上只是一个名为NgAnnotate的后处理任务。是的,这是为了角度1.这是一个生活救星。你应该看看它。 –
这可能只是因为我使用的是ES6而不是ES5。 – Cooper