Карма: ReferenceError: приложение не определено

Я следовал руководству с сайта http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-karma.html для тестирования приложений AngularJS с помощью Karma.

Мой karma.conf.js выглядит так:

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [
      'public/bower_components/angular/angular.min.js',
      'public/bower_components/angular-route/angular-route.min.js',
      'public/bower_components/d3/d3.js',
      'public/bower_components/nvd3/nv.d3.js',
      'public/bower_components/angularjs-nvd3-directives/dist/angularjs-nvd3-directives.js',
      'public/bower_components/angular-mocks/angular-mocks.js',
      'public/scripts/**/*.js',
      'test/*Spec.js'
    ],
    exclude: [
    ],
    preprocessors: {
    },
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  });
};

И мой тест:

describe("app", function() {

  beforeEach(angular.mock.module('app'));

  it('should have a HomeController', function() {
    expect(app.HomeController).not.to.equal(null);
  });

});

общедоступные/скрипты/app.js

angular.module('app', [
  'ngRoute',
  'app.controllers',
  'nvd3ChartDirectives'
]);

Я получаю вывод в консоли: приложение должно иметь HomeController FAILED ReferenceError: приложение не определено

Любая помощь будет оценена по достоинству,

Заранее спасибо!


person ssuljic    schedule 25.08.2014    source источник
comment
Я думаю, что ваш модуль app определен внутри app.js. Можете ли вы показать использовать код? Может быть, вы хотите изменить 'public/scripts/*.js', на 'public/scripts/**/*.js',, чтобы каждый подкаталог включался в ваши тесты.   -  person 23tux    schedule 25.08.2014
comment
Обновленный вопрос, но получение того же результата.   -  person ssuljic    schedule 25.08.2014
comment
Ваш базовый путь должен указывать, где находятся ваши сценарии для приложения. Наш находится в /app, поэтому базовый путь определен и ../app   -  person epitka    schedule 25.08.2014


Ответы (1)


Решено с помощью:

describe('app', function(){
  beforeEach(module('app'));

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

  it('should have defined HomeController', function() {
    expect(ctrl).toBeDefined();
  });
}
person ssuljic    schedule 08.07.2015