угловой карма-жасмин юнит тест для контроллера

0

Я добавляю модуль userController к моему проекту SPA с Jasmine on Karma. Я получил сообщение об ошибке "Ошибка: [$ injector: modulerr] Не удалось создать модуль myApp.controllers из-за: Ошибка: [$ injector: nomod] Модуль" myApp.controllers "недоступен!". Приложение работает нормально. По какой-то причине просто unit тест не видит модуль контроллера. Спасибо за вашу помощь.

/// <reference path="~/scripts/_references.js" />
/// <reference path="~/scripts/controllers/userController.js" />

'use strict';

describe('Controllers: userCtrl', function() {
      var scope, ctrl;

      beforeEach(function() {
        module('myApp.controllers');
      });

      beforeEach(inject(function($rootScope, $controller) {
        scope = $rootScope.$new();
        ctrl = $controller('userCtrl', {
          $scope: scope
        });
      }));

      it("Should be false", function() {
        expect(false).toBeFalsy();
      });
    }

MainController.js содержит только две строки с ['myApp.factories'] как зависимость в объявлении модуля следующим образом:

'use strict';

angular.module('myApp.controllers', ['myApp.factories']);

Фактические контроллеры находятся в своих.js файлах и имеют angular.module('myApp.controllers') без [] в объявлении. Пользователь UserController.js выглядит следующим образом:

'use strict';

angular.module('myApp.controllers')
  .controller('userCtrl', ['$scope', '$location', '$window', 'version',
    function ($scope, $location, $window, version)
    {
      $scope.$root.title = 'AngularJS SPA | User';
      $scope.appVersion = version;
      $scope.title = 'User';
      $scope.content = "my contents goes here";
    }]);

В файле karma.conf.js у меня есть следующее свойство:.

files: [
          'bower_components/angular/angular.js',
          'bower_components/angular-ui-router/release/angular-ui-router.js',
          'bower_components/angular-mocks/angular-mocks.js',
          'bower_components/angular-resource/angular-resource.js',
          'bower_components/jquery/dist/jquery.js',
          'myApp/scripts/controllers/*.js',
          'myApp/scripts/tests/*.spec.js',
          'myApp/scripts/tests/**/*.spec.js'
        ],
Теги:
unit-testing

2 ответа

0
Лучший ответ

Проблема возникает из myApp.factories, я не вижу этот объявленный модуль где-либо в наблюдателе файлов кармы. Перед линией контроллеров введите myApp.factories модулю myApp.factories и должны работать нормально.

0

У моего Karma.conf.js теперь есть следующее, но теперь Karma жалуется на ошибку: [$ injector: itkn] Неверный токен ввода! Ожидаемое имя службы как строка, не определено.

files: [
  'bower_components/angular/angular.js',
  'bower_components/angular-mocks/angular-mocks.js',
  'bower_components/angular-resource/angular-resource.js',
  'bower_components/angular-ui-router/release/angular-ui-router.js',
  'bower_components/jquery/dist/jquery.js',
  'AngularSPA/Scripts/factories/services.js',
  'AngularSPA/Scripts/factories/factories.js',
  'AngularSPA/scripts/controllers/mainController.js',
  'AngularSPA/scripts/controllers/*.js',
  'AngularSPA/scripts/tests/*.spec.js',
  'AngularSPA/scripts/tests/**/*.js'
],
  • 0
    Это может происходить из version которую вы пытаетесь внедрить в свой контроллер. проверьте, если вы даете заявленный файл в вашем файле Karma conf.js. Если version является угловой версией, которую вы используете, вы можете просто достичь ее без каких-либо инъекций: $scope.appVersion = angular.version( ) которые возвращают объект. Для получения более подробной информации: docs.angularjs.org/api/ng/object/angular.version
  • 0
    Спасибо. версия является поставщиком значений, который я определил в service.js следующим образом: angular.module ('cmtApp.services', []) .value ('version', '5.0');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню