Карма выдает ошибку: контроллер с именем ... не зарегистрирован - PullRequest
0 голосов
/ 13 января 2020

Моя карма.конф. js

module.exports = function(config) {
  config.set({

    basePath: './app',

    files: [
      'lib/angular/angular.js',
      'lib/angular-route/angular-route.js',
      'lib/angular-aria/angular-aria.js',
      'lib/angular-animate/angular-animate.js',
      'lib/angular-messages/angular-messages.js',
      'lib/angular-material/angular-material.js',
      'lib/angular-mocks/angular-mocks.js',
      'lib/angular-material/angular-material-mocks.js',
      '**/*.module.js',
      '!(lib)/{*module.js,*_test.js}',
      '**/*_test.js'
    ],

    autoWatch: true,

    frameworks: ['jasmine'],

    browsers: ['Chrome'],

    plugins: [
      'karma-chrome-launcher',
      'karma-firefox-launcher',
      'karma-jasmine'
    ]

  });
};

Файл store-menu.component. js:

angular.module('storeMenu').component('storeMenu', {
  templateUrl: '/store-menu/store-menu.template.html',
  controller: ['$scope', function storeMenuController($scope) {
    // code
  }]
});

И файл store-menu_test. js:

describe('storeMenuController', function() {
  beforeEach(module('storeMenu'));
  let $controller, $rootScope;
  beforeEach(inject(function(_$controller_, _$rootScope_) {
    $controller = _$controller_;
    $rootScope = _$rootScope_;
  }));

  describe('menu check', function() {
    var $scope;
    beforeEach(function() {
      $scope = {};
      let controller = $controller('storeMenuController', { scope: $scope });
    });
  });
});

Я запускаю запуск кармы и вижу следующую ошибку:

13 01 2020 14:33:02.886:INFO [Chrome 79.0.3945 (Linux 0.0.0)]: Connected on socket HSbuBkIECXrBULKMAAAA with id 32069697
Chrome 79.0.3945 (Linux 0.0.0) storeMenuController menu check isHide must be true FAILED
        Error: [$controller:ctrlreg] The controller with the name 'storeMenuController' is not registered.
        https://errors.angularjs.org/1.7.9/$controller/ctrlreg?p0=storeMenuController
        Error: [$controller:ctrlreg] The controller with the name 'storeMenuController' is not registered.
        https://errors.angularjs.org/1.7.9/$controller/ctrlreg?p0=storeMenuController
            at lib/angular/angular.js:138:12
            at $controller (lib/angular/angular.js:11680:17)
            at lib/angular-mocks/angular-mocks.js:2555:14
            at UserContext.<anonymous> (store-menu/store-menu_test.js:15:24)
            at <Jasmine>
        ReferenceError: except is not defined
            at <Jasmine>
            at UserContext.<anonymous> (store-menu/store-menu_test.js:18:7)
            at <Jasmine>
Chrome 79.0.3945 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) (0.137 secs / 0.106 secs)
TOTAL: 1 FAILED, 0 SUCCESS

Я думаю, что проблема в этих строках:

'**/*.module.js',
'!(lib)/**/{*module.js,*_test.js}',
'**/*_test.js'

Я также пробовал это конфигурация:

'**/*.module.js',
'*!(.module|_test).js',
'!(lib)/**/*!(.module|_test).js',
 '**/*_test.js'

Но это не работает, и когда я вхожу в терминал (в арке linux)

[i@pc app]$ ls !(lib)/**/*!(.module|_test).js
ls: cannot access '!(lib)/**/*!(.module|_test).js': No such file or directory
[i@pc app]$ ls !(lib)/{*module.js,*_test.js}
options-menu/options-menu.module.js  store-menu/store-menu_test.js
store-menu/store-menu.module.js

, второе выражение работает в терминале, но не работать в карме. Первое выражение должно работать в карме, но я не могу проверить его в терминале, как вы видите выше. Как правильно все подключить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...