Moka tests unitaires en cours d'exécution avec le Karma - done() n'est pas défini

Que j'essaie de faire des tests écrits avec Moka à courir Karma, et ils genre de travail, mais je ne peux pas utiliser la méthode done() pour mettre en œuvre async tests, ce qui en fait essentiellement les outils inutile pour moi. Ce qui me manque?

karma.conf.js

module.exports = function(config) {
  config.set({
    basePath: '../..',
    frameworks: ['mocha', 'requirejs', 'qunit'],
    client: {
        mocha: {
            ui: 'bdd'
        }
    },
    files: [
      {pattern: 'libs/**/*.js', included: false},
      {pattern: 'src/**/*.js', included: false},
      {pattern: 'tests/mocha/mocha.js', included: false},
      {pattern: 'tests/should/should.js', included: false},
      {pattern: 'tests/**/*Spec.js', included: false},
      'tests/karma/test-main.js'
    ],
    exclude: [
      'src/main.js'
    ],
    //test results reporter to use
    //possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
    reporters: ['progress', 'dots'],
    port: 9876,
    colors: true,
    //possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_WARN,
    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: ['Chrome'],
    //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
  });
};

test-main.js (la configuration de RequireJS)

var allTestFiles = [];
var pathToModule = function(path) {
  return path.replace(/^\/base\//, '../').replace(/\.js$/, '');
};

Object.keys(window.__karma__.files).forEach(function(file) {
  if (/Spec\.js$/.test(file)) {
    //Normalize paths to RequireJS module names.
    allTestFiles.push(pathToModule(file));
  }
});

require.config({
  //Karma serves files under /base, which is the basePath from your config file
  baseUrl: '/base/src',
  paths: {
    'should': '../tests/should/should',
    'mocha': '../tests/mocha/mocha',
    'pubsub': '../libs/pubsub/pubsub',
    'jquery': '../libs/jquery/jquery-1.10.2',
    'jquery-mobile': '//code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min'
  },
  //dynamically load all test files
  deps: allTestFiles, 
  //we have to kickoff jasmine, as it is asynchronous
  callback: window.__karma__.start
});

tests/fooSpec.js

define(['music/note'], function(Note) {

describe('nothing', function(done) {
    it('a silly test', function() {
        var note = new Note;
        note.should.not.eql(32);
    });
    done();
});
...

Si ce n'est un exemple artificiel, il réussit si je supprime le fait (). Comme il est, j'obtiens:

Uncaught TypeError: undefined is not a function
at /Library/WebServer/Documents/vg/tests/mocha/fooSpec.js:8

C'est le fait (). Comment/pourquoi ce n'est pas définie? Je ne comprends pas où d'autre à configurer Moka (ou des options). Est-il une sorte d'espace de noms global ou de la méta-programmation de la magie provoquant RequireJS pour interférer avec Moka?

Je suis d'exécuter les tests en Chrome 33 sur OS X 10.9.2, dans le cas qui est au tous les. J'ai tué une tonne de temps sur ce sujet et je suis prêt à renoncer à des tests automatisés 🙁 -- avait même des murs de briques avec QUnit/Karma/RequireJS et n'ont pas été en mesure de trouver une alternative à réussir à automatiser les tests. Je me sens comme un idiot.

OriginalL'auteur Jason Boyd | 2014-03-19