2016-12-29 7 views
1

Я пытаюсь использовать угловое приложение с бэкэндом 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; 

Модуль безопасности зашифрован в моем основном модуле приложения, поэтому я также могу это предоставить. Я прочитал несколько ресурсов по этому поводу, но ничто из того, что я пробовал, оказалось особенно полезным до сих пор.

Заранее благодарен!

+1

Это больше похоже на Angular2, чем AngularJS. Я никогда не видел синтаксиса '' ngInject '', например, в AngularJS. –

+1

@MikeMcCaughan, это на самом деле просто задача пост-обработки под названием NgAnnotate. И да, это для углового 1. Это спасатель жизни. Вы должны изучить это. –

+0

Это может быть только потому, что я использую ES6 вместо ES5. – Cooper

ответ

1
.controller(SecurityController) 
.service(SignUp) 
.service(AuthenticationService); 

должен быть

.controller('SecurityController', SecurityController) 
.service('SignUp', SignUp) 
.service('AuthenticationService', AuthenticationService); 

Вы должны указать имя OV контроллера/сервиса, а затем его реализацию.

+0

Ах, я не могу поверить, что я пропустил это! Это сделало это для меня. Благодаря! – Cooper

 Смежные вопросы

  • Нет связанных вопросов^_^