Я пытаюсь использовать угловое приложение с бэкэндом Grails, и я тестирую контроллер, просто чтобы убедиться, что он существует, прежде чем я начну работать с ним. К сожалению, это дает мне следующую ошибку:Угловой контроллер не регистрируется во время модульного тестирования
[$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;
Модуль безопасности зашифрован в моем основном модуле приложения, поэтому я также могу это предоставить. Я прочитал несколько ресурсов по этому поводу, но ничто из того, что я пробовал, оказалось особенно полезным до сих пор.
Заранее благодарен!
Это больше похоже на Angular2, чем AngularJS. Я никогда не видел синтаксиса '' ngInject '', например, в AngularJS. –
@MikeMcCaughan, это на самом деле просто задача пост-обработки под названием NgAnnotate. И да, это для углового 1. Это спасатель жизни. Вы должны изучить это. –
Это может быть только потому, что я использую ES6 вместо ES5. – Cooper