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