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"
}
Vous devez vous connecter pour publier un commentaire.
Le message indiquant que le module angulaire n'est pas définie signifie que votre angular-mocks.js le fichier n'est pas chargé, malgré le fait que vous l'avez indiqué dans votre karma.conf.js fichier.
Le problème que vous rencontrez est gulp-karma sans tenir compte de votre karma.conf.js les fichiers de tableau. Cela se produit lorsque vous passez une chaîne ou glob dans gulp.src dans le gulpfile.
Pour contourner cela, passer gulp.src une chaîne pour un faux fichier, "./foobar" par exemple, et ce sera la cause de la fichiers de tableau dans la karma.conf.js fichier pour être utilisé à la place.
Espérons que cette aide!
De référence:
https://github.com/lazd/gulp-karma/issues/9
Ce n'est pas la réponse à votre question en particulier,
mais j'ai eu un problème similaire dans le même type de scénario.
Cependant, la cause est différente,
je vais donc partager ici au cas où d'autres trouvent ce post et ils ont le même problème que j'ai eu.
Dans mon cas, parce que j'ai introduit de tests plus tard dans le jeu,
il y avait un incompatibilité entre les versions angulaire (1.4.7) et anguleuses se moque (1.6.9).
J'ai trouvé que c'était la cause de racine
en utilisant le debug du Karma dans le navigateur.
L'abaissement de la version de anguleuses se moque de match angulaire résolu le problème.