Angulaire de test avec Karma: “le module n'est pas défini”

Je sais que cette question a été posée de nombreuses fois, et je sais que dans la plupart des cas, les gens sont manquantes angular-mocks.js fichier.

Je suis en cours d'exécution dans la même question, en essayant de tester une usine sur un module. Malheureusement, je continue de courir dans des problèmes avec les tests (pourquoi, Angulaire, oh pourquoi devez-vous assumer un window et document objet?), qui font état du module n'est pas défini. Je suis à une perte. J'ai aussi essayé d'utiliser angulaire.des simulacres.module, mais puis je reçois un message disant Angulaire n'est pas défini. Ce que je fais mal?

De la note, je suis en utilisant gulp comme une tâche coureur. Mon gulpfile (pas encore parfait, les tâches ne sont pas liés):

var gulp = require('gulp'),

    uglify = require('gulp-uglify'),
    jshint = require('gulp-jshint'),
    jasmine = require('gulp-jasmine'), 
    karma = require('gulp-karma'),

    paths = {
        scripts: "scripts/*.js",
        spec: "spec/*.js",
        dist: "dist"
    };

gulp.task('prepare', function () {
    return gulp.src(paths.scripts)
        .pipe(jshint())
        .pipe(jshint.reporter('default'))
        .pipe(uglify())
        .pipe(gulp.dest(paths.dist))
});

gulp.task('test', function () {
    gulp.src([paths.scripts, paths.spec])
        .pipe(karma({
            configFile: 'karma.conf.js',
            action: 'run'
        }));
});

gulp.task('default', ['prepare', 'test']);

Mon karma.conf.js, généré par le karma, init:

//Karma configuration
//Generated on Fri Mar 14 2014 14:24:30 GMT-0400 (EDT)

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

    //base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',


    //frameworks to use
    //available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],


    //list of files /patterns to load in the browser
    files: [
      './lib/angular/angular.min.js',
      './lib/angular-mocks/angular-mocks.js',
      './src/*.js',
      './spec/*.js'
    ],


    //list of files to exclude
    exclude: [

    ],


    //preprocess matching files before serving them to the browser
    //available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {

    },


    //test results reporter to use
    //possible values: 'dots', 'progress'
    //available reporters: https://npmjs.org/browse/keyword/karma-reporter
    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_INFO,


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


    //start these browsers
    //available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],


    //Continuous Integration mode
    //if true, Karma captures browsers, runs the tests and exits
    singleRun: false
  });
};

Et enfin, mon test de la suite (rien n'est encore mis en place, si je peux passer cet obstacle, nous allons être bon):

/* Tests for memento.js. */
describe('memento core test suite', function () {
var memento;
beforeEach(module('Memento'));
beforeEach(function() {
inject(function(_memento_) {
memento = _memento_;
});
});
//Check functions.
//check to see if it has the expected function
it('should match expected interface', function () { 
expect(angular.isFunction(memento.canUndo)).toBe(true);
expect(angular.isFunction(memento.canRedo)).toBe(true);
expect(angular.isFunction(memento.undo)).toBe(true);
expect(angular.isFunction(memento.redo)).toBe(true);
expect(angular.isFunction(memento.push)).toBe(true);
});
it('should initialize', function () {
this.fail(Error('Test not implemented'));
});
it('should push() a changed object', function () {
this.fail(Error('Test not implemented'));
});
it('should not push() an unchanged object', function () {
this.fail(Error('Test not implemented'));
});
it('should return original object on undo()', function () {
this.fail(Error('Test not implemented'));
});
it('should return modified object on redo()', function () {
this.fail(Error('Test not implemented'));
});
it('should not undo() if at beginning of stack', function () {
this.fail(Error('Test not implemented'));
});
it('should not redo() if at end of stack', function () {
this.fail(Error('Test not implemented'));
});
//TODO: Implement revert to original, clearing history.
//
//it('should return seed object on revert()', function () {
// this.fail(Error('Test not implemented'));
//});
//it('should clear the stack on clear()', function () {
// this.fail(Error('Test not implemented'));
//});
});

Personne ne vois rien de mal? Je ne sais pas si il y a quelque chose de vraiment évident, je suis en manque, je pourrais utiliser une paire d'yeux supplémentaire, ou à plusieurs. J'ai d'abord pensé que je serais en mesure de l'exécuter comme un simple Jasmin suite de test sans Karma, mais en raison de l'Angulaire, qui a des problèmes. Si je ne peux pas obtenir que cela fonctionne, je pourrais simplement utiliser npm Angulaire de l'package et de modifier mon Angulaire module afin qu'il supporte CommonJS...

Merci à chacun de vous! Espère que je ne suis pas fou.

Edit: j'ai inclus ma devdependencies.

  "devDependencies": {
"gulp": "~3.5.6",
"gulp-uglify": "~0.2.1",
"gulp-jshint": "~1.5.0",
"gulp-jasmine": "~0.2.0",
"angular": "~1.2.10",
"karma": "~0.12.0",
"gulp-karma": "0.0.4",
"karma-jasmine": "~0.2.2",
"karma-chrome-launcher": "~0.1.2"
}
InformationsquelleAutor jedd.ahyoung | 2014-03-14