Obteniendo el “Módulo anonymous define () no coincidente …” cuando bash ejecutar pruebas

Estoy intentando configurar mi prueba de unidad karma jasmine con requirejs. Pero cada vez que lo ejecuto, obtengo el siguiente error:

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 

A continuación se encuentran los archivos differenr: spec file:

 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'] } } }); 

test-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 }); } 

He probado diferentes opciones mencionadas en otros hilos, pero nada parece funcionar.

Finalmente resolví todos los problemas y pude ejecutar la prueba de jasmine con éxito con la configuración de requirejs. Mencioné todas las dependencias en la configuración de karma y las marqué como included: false exclusivamente para que Loadjs las cargue mediante requirejs a través de mi archivo test-config.

 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}] 

solo el test-config se carga a través del karma y todos los demás para ser incluidos en la configuración del karma, pero se marca como falso.

Además, tuve que cargar la aplicación.js en mi archivo de especificaciones para que los módulos y controladores se cargaran:

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

Dado que está cargando los archivos .js específicos que necesita en su test-main.js con el parámetro paths: { } , no es necesario que los liste explícitamente en karma.config.js. En cambio, puede usar su línea { pattern: 'app/**/*.js', included: false } . Todas las líneas anteriores son redundantes. Solo asegúrate de tener el modificador included: false , de lo contrario Karma los cargará en línea, y obtendrás el Uncaught Error: Mismatched anonymous define()