Получение «Несоответствующий модуль анонимного определения () …», когда я пытаюсь выполнить тесты

Я пытаюсь настроить тестирование модуляции jasmineа кармы с помощью requirejs. Но каждый раз, когда я запускаю его, я получаю следующую ошибку:

Chrome 34.0.1847 (Mac OS X 10.9.2) ERROR Uncaught Error: Mismatched anonymous define() module: function (angular){ describe('Unit: Testing RequireJS', function(){ var ctrl; var scope; var rootScope; beforeEach(angular.mock.module('wsaApp')); beforeEach(angular.mock......ch 

Ниже представлены файлы differenr: spec файл:

 define(['angular'], function(angular){ describe('Unit: Testing RequireJS', function(){ var ctrl; var scope; var rootScope; beforeEach(angular.mock.module('wsaApp')); beforeEach(angular.mock.inject(function($rootScope){ scope = $rootScope.$new(); rootScope = $rootScope; })); }); }); 

main.js

 require.config({ paths: { /* ABC order */ 'angular': 'vendor/angular/1.2.0/angular.min' }, shim: { 'angular': { exports: 'angular' }, 'app/controllers': { deps: ['angular'] } } }); 

тест-main.js

 // This creates an array of all the files that Karma finds with a suffix of // Test.js (eg utilsTest.js) to be added to the Require JS config below var tests = [], file; for (file in window.__karma__.files) { if (window.__karma__.files.hasOwnProperty(file)) { if(/spec\.js$/.test(file)) { tests.push(file); } } } requirejs.config({ baseUrl: '/base/public/javascripts/', // Karma serves files from /base/ paths: { /* ABC order */ 'angular': 'vendor/angular/1.2.1/angular.min' }, shim: { 'angular': { exports: 'angular' }, 'app/controllers': { deps: ['angular'] }, }, deps: tests, // add tests array to load our tests callback: window.__karma__.start // start tests once Require.js is done }); 

karma.conf.js

 //Karma configuration module.exports = function (config) { config.set({ // base path, that will be used to resolve files and exclude basePath: '', // Fix for "JASMINE is not supported anymore" warning frameworks: ["jasmine", "requirejs"], // list of files / patterns to load in the browser files: [ 'vendor/angular/1.2.1/angular.js', 'jquery-1.7.1.min.js', 'test/spec/**/*.js', 'test/test-main.js' ], preprocessors: { 'app/**/*.js': 'coverage' }, // list of files to exclude exclude: ['app/main.js'], // test results reporter to use // possible values: dots || progress || growl reporters: ['progress', 'coverage'], coverageReporter : { type: 'html', dir: 'coverage/' }, // web server port port: 9876, // cli runner port runnerPort: 9100, // enable / disable colors in the output (reporters and logs) colors: true, // level of logging // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG logLevel: config.LOG_INFO, // enable / disable watching file and executing tests whenever any file changes autoWatch: false, // Start these browsers, currently available: // - Chrome // - ChromeCanary // - Firefox // - Opera // - Safari (only Mac) // - PhantomJS // - IE (only Windows) browsers: ['Chrome'], browserNoActivityTimeout: 100000, // If browser does not capture in given timeout [ms], kill it captureTimeout: 20000, // Continuous Integration mode // if true, it capture browsers, run tests and exit singleRun: true }); } 

Я пробовал разные варианты, упомянутые в других streamах, но ничего не работает.

Наконец, я решил все проблемы и смог успешно запустить тест jasmineа с помощью конфигурации requirejs. Я упомянул все зависимости в конфигурации karma и отметил их как included: false исключительно, чтобы они загружались requirejs через мой тестовый файл конфигурации.

 files: [ {pattern: 'vendor/angular/1.2.1/angular.js', included: false}, {pattern: 'vendor/angular/1.2.1/angular-mocks.js', included: false}, {pattern: 'vendor/angular/1.2.1/angular-*.js', included: false}, {pattern: 'vendor/bootstrap/bootstrap-*.js', included: false}, {pattern: 'jquery-1.7.1.min.js', included: false}, {pattern: 'app/app.js', included: false}, {pattern: 'app/**/*.js', included: false}, {pattern: 'test/test-config.js', included: true}] 

только тестовая конфигурация загружается через карму, а все остальные – в конфигурацию кармы, но отмечаются как ложные.

Кроме того, мне пришлось загрузить app.js в моем файле spec, чтобы модули и controllerы загружались:

 define(['angular-mocks', 'jquery', 'app/app'], function(angularmocks, $, app){ describe..... } 

Поскольку вы загружаете определенные .js-файлы, которые вам нужны в вашем test-main.js с параметрами paths: { } , вам не нужно явно указывать их в файле karma.config.js. Вместо этого вы можете просто использовать свою строку { pattern: 'app/**/*.js', included: false } . Все строки до этого являются избыточными. Просто убедитесь, что у вас есть included: false модификатор, иначе Карма будет загружать их в линию, и вы получите сообщение об Uncaught Error: Mismatched anonymous define()

  • Как получилось, что Angular не обновляется здесь?
  • Конфигурация данных с координатами angularjs между controllerами
  • Json.Net: Html Помощник не регенерирует
  • AngularJS - Доступ к охвату ребенка
  • Ошибка AngularJS .success не является функцией
  • Как вы можете ограничить значение из ввода с помощью AngularJS?
  • Можно ли сделать вид дерева с угловым?
  • Как получить значение offset (). Верхнее значение элемента без использования jQuery?
  • Может ли controller AngularJS наследовать от другого controllerа в том же модуле?
  • AngularJS - Как я могу ссылаться на имя свойства в ng-Repeat
  • Угловые данные JS связаны в ng-bind-html?
  • Давайте будем гением компьютера.