Karma Test Runner RequireJS 404 错误,未提供内容

Karma Test Runner RequireJS 404 error, not serving up content

我的 app.js 文件出现 404 错误,即使它存在于 URL 中,它说它不存在(因果报应)。知道这是什么以及如何解决吗? >.> 快疯了。

DEBUG [web-server]: serving: /Users/tina/Sites/node_require/client/src/app.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/client/src/views/add.js
WARN [web-server]: 404: /base/client/src/app

我的目录结构:

   karma.conf.js
   bower_components/
   client/
      src/
          -app.js
          -main.js

      spec/
          -app.test.js
          -test.main.js
          views/
             -add.test.js

我的karma.conf.js:

// Karma configuration
// Generated on Mon Apr 13 2015 19:36:01 GMT-0400 (EDT)

module.exports = function(config) {
  config.set({

    // base path, that will be used to resolve files and exclude
    basePath:'',


    // frameworks to use
    frameworks: ['jasmine', 'requirejs'],


    // list of files / patterns to load in the browser
    files: [
      //'build/tests.js',
      //{pattern: 'build/tests.js', included: false},
      'client/spec/test-main.js',

      {pattern: 'client/src/**/*.js', included: false},
      {pattern: 'client/spec/**/*.test.js', included: false},
      {pattern: 'bower_components/underscore/underscore.js', included: false},
      {pattern: 'bower_components/jquery/jquery.js', included: false},
      {pattern: 'bower_components/backbone/backbone.js', included: false},
      {pattern: 'bower_components/backbone.marionette/lib/backbone.marionette.js', included: false},
      {pattern: 'bower_components/requirejs-text/text.js', included: false},
      {pattern: 'bower_components/handlebars/handlebars.runtime.js', included: false},
      {pattern: 'bower_components/handlebars/handlebars.js', included: false},
      {pattern: 'bower_components/requirejs-handlebars/hb.js', included: false},
      ],


    // list of files to exclude
    exclude: [
    'client/src/main.js'
    ],


    // test results reporter to use
    // possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
    reporters: ['progress'],


    // web server port
    port: 9876,


    // enable / disable colors in the output (reporters and logs)
    colors: true,


    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_DEBUG,


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,


    // Start these browsers, currently available:
    // - Chrome
    // - ChromeCanary
    // - Firefox
    // - Opera (has to be installed with `npm install karma-opera-launcher`)
    // - Safari (only Mac; has to be installed with `npm install karma-safari-launcher`)
    // - PhantomJS
    // - IE (only Windows; has to be installed with `npm install karma-ie-launcher`)
    browsers: ['PhantomJS'],


    // If browser does not capture in given timeout [ms], kill it
    captureTimeout: 60000,


    // Continuous Integration mode
    // if true, it capture browsers, run tests and exit
    singleRun: false
  });
};

我的测试-main.js:

var tests = [];
for (var file in window.__karma__.files) {
    if (/.test\.js$/.test(file)) {
        tests.push(file);
    }
}

requirejs.config({
    // Karma serves files from '/base'
    baseUrl: '/base/client/src/',

   shim: {
    jquery: {
      exports: '$'
    },
    underscore: {
      exports: '_'
    },
    backbone: {
      deps: [
        'jquery',
        'underscore'
      ],
      exports: 'Backbone'
    },
    marionette: {
      deps: [
        'jquery',
        'underscore',
        'backbone'
      ],
      exports: 'Marionette'
    },
    bootstrap: {
      deps: [
        'jquery'
      ]
    },
    'handlebars.runtime': {
        exports: 'handlebars.runtime'
    },
    handlebars: {
        deps: ['handlebars.runtime']
    },
  },
  paths: {
    backbone: '../../bower_components/backbone/backbone',
    marionette: '../../bower_components/backbone.marionette/lib/backbone.marionette',
    jquery: '../../bower_components/jquery/jquery',
    underscore: '../../bower_components/underscore/underscore',
    text: '../../bower_components/requirejs-text/text',
    'handlebars.runtime': '../../bower_components/handlebars/handlebars.runtime',
    handlebars: '../../bower_components/handlebars/handlebars',
    hb: '../../bower_components/requirejs-handlebars/hb',
  },


    // ask Require.js to load these files (all our tests)
    deps: tests,

    // start test run, once Require.js is done
    callback: window.__karma__.start
});

app.test.js(这里的 'app' 模块永远不会解析)

define([
    'app', 
    'marionette',
],
function (App, Marionette) {
    'use strict';

    describe('App', function() {
        var app = new App();
        it('should have a start function', function() {
            expect(app.start).toBeDefined();
        });
    ....

调试日志:

INFO [launcher]: Starting browser PhantomJS
DEBUG [launcher]: Creating temp dir at /var/folders/lz/rp48gjr977n5bq684cbydpcw0000gn/T/karma-16204309
DEBUG [launcher]: /Users/tina/Sites/node_require/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/lib/phantom/bin/phantomjs /var/folders/lz/rp48gjr977n5bq684cbydpcw0000gn/T/karma-16204309/capture.js
DEBUG [watcher]: Excluded file "/Users/tina/Sites/node_require/client/src/main.js"
DEBUG [watcher]: Resolved files:
    /Users/tina/Sites/node_require/node_modules/requirejs/require.js
    /Users/tina/Sites/node_require/node_modules/karma-requirejs/lib/adapter.js
    /Users/tina/Sites/node_require/node_modules/karma-jasmine/lib/jasmine.js
    /Users/tina/Sites/node_require/node_modules/karma-jasmine/lib/adapter.js
    /Users/tina/Sites/node_require/client/spec/test-main.js
    /Users/tina/Sites/node_require/client/src/app.js
    /Users/tina/Sites/node_require/client/src/collections/contacts.js
    /Users/tina/Sites/node_require/client/src/controller.js
    /Users/tina/Sites/node_require/client/src/models/contact.js
    /Users/tina/Sites/node_require/client/src/router.js
    /Users/tina/Sites/node_require/client/src/views/add.js
    /Users/tina/Sites/node_require/client/src/views/contact_details.js
    /Users/tina/Sites/node_require/client/src/views/contacts.js
    /Users/tina/Sites/node_require/client/spec/app.test.js
    /Users/tina/Sites/node_require/client/spec/views/add.test.js
    /Users/tina/Sites/node_require/bower_components/underscore/underscore.js
    /Users/tina/Sites/node_require/bower_components/jquery/jquery.js
    /Users/tina/Sites/node_require/bower_components/backbone/backbone.js
    /Users/tina/Sites/node_require/bower_components/backbone.marionette/lib/backbone.marionette.js
    /Users/tina/Sites/node_require/bower_components/requirejs-text/text.js
    /Users/tina/Sites/node_require/bower_components/handlebars/handlebars.runtime.js
    /Users/tina/Sites/node_require/bower_components/handlebars/handlebars.js
    /Users/tina/Sites/node_require/bower_components/requirejs-handlebars/hb.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/node_modules/karma/static/client.html
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/node_modules/karma/static/karma.js
DEBUG [karma]: A browser has connected on socket Bl_al5KEDvICYzohgJV7
INFO [PhantomJS 1.9.8 (Mac OS X)]: Connected on socket Bl_al5KEDvICYzohgJV7
DEBUG [karma]: All browsers are ready, executing
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/node_modules/karma/static/context.html
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/node_modules/requirejs/require.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/node_modules/karma-requirejs/lib/adapter.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/node_modules/karma-jasmine/lib/adapter.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/node_modules/karma-jasmine/lib/jasmine.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/client/spec/test-main.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/client/spec/app.test.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/client/spec/views/add.test.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/client/src/app.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/client/src/views/add.js
WARN [web-server]: 404: /base/client/src/app
ERROR: 'There is no timestamp for /base/client/src/app!'
PhantomJS 1.9.8 (Mac OS X): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/client/src/collections/contacts.js
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/client/src/models/coPhantomJS 1.9.8 (Mac OS X) ERROR
    Error: Script error for: /base/client/src/app
    http://requirejs.org/docs/errors.html#scripterror
    at /Users/tina/Sites/node_require/node_modules/requirejs/require.js:141
PhantomJS 1.9.8 (Mac OS X): Executed 0 of 0 ERROR (0 secs / 0 secs)
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/bower_components/reqPhantomJS 1.9.8 (Mac OS X): Executed 0 of 0 ERROR (0.04 secs / 0 secs)
DEBUG [launcher]: Disconnecting all browsers
DEBUG [launcher]: Killing PhantomJS
DEBUG [web-server]: serving: /Users/tina/Sites/node_require/bower_components/jquery/jquery.js
DEBUG [launcher]: Process PhantomJS exitted with code 0
DEBUG [launcher]: Cleaning temp dir /var/folders/lz/rp48gjr977n5bq684cbydpcw0000gn/T/karma-16204309
Warning: Task "karma:test" failed. Use --force to continue.

错误是因为我忘记在我的 conf 文件中包含我的模板目录,这对于我的 views/add.test.js 文件正确地 运行 是必要的。这修复了它:

  {pattern: 'client/templates/*.hbs', included: false},

似乎在任何测试文件中未解决依赖关系时,它会传播到 404:/base/client/src/app 错误