Requirejs throws 404, trying to download a file from a karmic runner

I try to load a test helper module using requirejs, but it fails even when it is already loaded as a dependency at the beginning of karma launch, and I cannot understand what the problem is, I always get

There is no timestamp for /base/spec/helpers/testHelpers!'

Tests are performed normally, inside them I need any application module without problems, it only fails when I specifically need something from the specifications folder.

I checked all the questions related to karma, and none of them apply to this case.

My karma.conf file:

module.exports = function (config) {
  'use strict';

  config.set({
    basePath: '',
    frameworks: ['jasmine', 'requirejs'],
    files: [
      'bootstrapTests.js',
      {
          pattern: 'app/**/*.js',
          included: false
      },
      {
          pattern: 'entities/**/*.js',
          included: false
      },
      {
          pattern: 'config/**/*.js',
          included: false
      },
      {
          pattern: 'libs/**/*.js',
          included: false
      },
      {
          pattern: 'spec/**/*Spec.js',
          included: false
      },
      {
          pattern: 'spec/helpers/**/*.js',
          included: false
      }
    ],
    exclude: [
        'bootstrap.js',
        'bootstrap.built.js'
    ],
    preprocessors: {
        'app/**/*.js': ['coverage'],
        'entities/**/*.js': ['coverage']
    },
    coverageReporter: {
        reporters: [
            {
                type: 'text-summary'
            }
        ]
    },
    reporters: ['progress', 'coverage'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['PhantomJS'],
    singleRun: false
  });
};

My bootstrapTests.js file:

var tests = [];

for (var file in window.__karma__.files) {
    if (window.__karma__.files.hasOwnProperty(file)) {
        // Add all spec files and helpers
        if (/spec\/.+.js$/.test(file)) {
            tests.push(file);
        }
    }
}

require.config({
    baseUrl: '/base',
    paths: {
        'backbone': 'libs/backbone',
        'marionette': 'libs/backbone.marionette',
        'jquery': 'libs/jquery-2.1.1',
        'json2': 'libs/json2',
        'underscore': 'libs/underscore',
        'twig': 'libs/twig',

        'editor': 'app/editor',
        'widgets': 'app/widgets',
        'menu': 'app/menu',

        'helpers': 'spec/helpers'
    },
    map: {
        '*': {
            'jquery': 'config/jquery/jqueryPrivate'
        },
        'config/jquery/jqueryPrivate': { 'jquery': 'jquery' }
    },
    deps: tests,

    callback: window.__karma__.start
});

therefore in my tests

define([
    'app/app',
    'backbone',
    'editor/editorController',
    'editor/editorApp',
], function (
    myApp,
    Backbone,
    editorController
) {
    'use strict';

    describe('editorApp', function () {

    .....

works like a charm but when i try

define([
    'app/common/routerUtilities',
    'backbone',
    'helpers/testHelpers'
], function (
    routerUtilities,
    Backbone,
    testHelpers
) {
    'use strict';

    describe('routerUtilities', function () {
    ...

testHelpers, , . , : spec/helpers/testHelpers,/base/spec/helpers/testHelpers,/spec/helpers/testHelpers,../../helpers/testHelpers .....

(), ( console.log) :

LOG: ['/base/spec/app/appSpec.js',
'/base/spec/app/common/routerUtilitiesSpec.js',
'/base/spec/app/editor/EditorLayoutViewSpec.js',
'/base/spec/app/editor/editorAppSpec.js',
'/base/spec/app/editor/editorControllerSpec.js',
'/base/spec/app/menu/menuControllerSpec.js',
'/base/spec/helpers/envSetup.js',
'/base/spec/helpers/testHelpers.js']

, window._ karma _.files( ):

LOG: Object{
 /base/bootstrapTests.js: 'c389a1d36d1c48f2879d434b10fd5a25b6b07758', 
 /base/app/app.js: '7ad39554809146effd20dd1db908fc068f8119ba',
 /base/app/common/routerUtilities.js: '4da0e1d1794cccc727b544cacbc6d672c0d9965a',
 ...
/base/config/marionette/renderer.js: '34a5e729f6133aa13841c5e949307cd437ca331b', 
/base/config/marionette/templateCache.js: '9f1901d4c6f43f5f90dadacb1c4ac179efd14b15', 
 /base/spec/app/appSpec.js: 'e01f4fea3533e25cfcd4f7621e1c1c5559e0eed8', 
/base/spec/app/common/routerUtilitiesSpec.js: 'a06b9793a635633d053142dff24d1ba4427dd365',
/base/spec/app/editor/EditorLayoutViewSpec.js: 'a24c7e8742e38b86d626bd6f3e45baacfa6af5eb', 
/base/spec/app/editor/editorAppSpec.js: '800c0e8e82840ebd0d1af07c3ec4556a24ee0b04', 
/base/spec/app/editor/editorControllerSpec.js: 'd2e259a477da85b6a2f742f5c6c3a4a34b7e340b', 
/base/spec/helpers/envSetup.js: '297aa1e59477d967aa210bece1726e8a372cb630', 
/base/spec/helpers/testHelpers.js: '5266065d344ca69f8f5980db16bf6d131492ebd0'

}

spec/helpers/testHelpers.js:

define([
    'backbone'
], function (
    Backbone
) {
    'use strict';

    var testHelpers = {
        setupRoutingTest: function () {
            Backbone.history.start();
            Backbone.history.navigate('');
        },
        teardownRoutingTest: function () {
            Backbone.history.navigate('');
            Backbone.history.stop();
        }
    };
    return testHelpers;
});

:

|-app

  |---common

  |---editor

  |---menu

  |---widgets

|-config

  |---jquery

  |---marionette

|-entities

|-features

|-gruntTasks

   |---lib

|-spec

   |---app

      |-----common

      |-----editor

      |-----menu

      |-----widgets

   |---entities

   |---helpers

 |-tmp
+4
2

, , karma-requirejs tests.

, ,

var tests = [];

for (var file in window.__karma__.files) {
    if (window.__karma__.files.hasOwnProperty(file)) {
        // Add all spec files and helpers
        if (/spec\/.+.js$/.test(file)) {
            tests.push(file);
        }
    }
}
+4

. , karma-requirejs, requirejs.

https://www.npmjs.org/package/karma-requirejs

requirejs.

+1

Source: https://habr.com/ru/post/1547586/


All Articles