start node karma instalar conf node.js gulp karma-runner

node.js - node - karma server



Problema al ejecutar la tarea de karma desde el trago (10)

¿Cómo estás haciendo tus pruebas con Gulp? Hace poco me encontré con este problema en OSX, ejecutando el nodo v0.11.14 y gulp 3.8.10 , siempre que hubo pruebas 3.8.10 .

Cambiando de lo recomendado:

gulp.task(''test'', function(done) { karma.start({ configFile: __dirname + ''/karma.conf.js'', singleRun: true }, done); });

A:

gulp.task(''test'', function(done) { karma.start({ configFile: __dirname + ''/karma.conf.js'', singleRun: true }, function() { done(); }); });

... se deshizo de este error.

Parece que se trata de cómo gulp maneja los mensajes de error cuando se señala un error en una devolución de llamada. Consulte Mejorar los mensajes de error al salir para obtener más información.

Estoy tratando de ejecutar pruebas de karma desde la tarea Gulp y estoy obteniendo este error:

Error: 1 at formatError (C:/Users/Tim/AppData/Roaming/npm/node_modules/gulp/bin/gulp.js:161:10) at Gulp.<anonymous> (C:/Users/Tim/AppData/Roaming/npm/node_modules/gulp/bin/gulp.js:187:15) at Gulp.emit (events.js:95:17) at Gulp.Orchestrator._emitTaskDone (C:/path/to/project/node_modules/gulp/node_modules/orchestrator/index.js:264:8) at C:/path/to/project/node_modules/gulp/node_modules/orchestrator/index.js:275:23 at finish (C:/path/to/project/node_modules/gulp/node_modules/orchestrator/lib/runTask.js:21:8) at cb (C:/path/to/project/node_modules/gulp/node_modules/orchestrator/lib/runTask.js:29:3) at removeAllListeners (C:/path/to/project/node_modules/karma/lib/server.js:216:7) at Server.<anonymous> (C:/path/to/project/node_modules/karma/lib/server.js:227:9) at Server.g (events.js:180:16)

Mi sistema es Windows 7 , la versión de nodejs es v0.10.32 , versión gulp:

[10:26:52] CLI version 3.8.8 [10:26:52] Local version 3.8.9

Además, el mismo error que estoy obteniendo en Ubuntu 12.04 LTS mientras estoy en Ubuntu 12.04 LTS más nuevo (no estoy seguro de qué versión) y mac os parece funcionar bien. ¿Qué puede causar este error?

Actualización 11/05/2016 : antes de escribir un comentario sobre el hecho de que la respuesta aceptada oculta los errores, por favor, vea los primeros dos comentarios a esa respuesta particular aceptada. Úselo solo si sabe lo que está haciendo. Información relacionada: https://github.com/karma-runner/gulp-karma/pull/15


A continuación se muestra un fragmento de código de patrones de trago sobre el uso de Karma. Es un poco similar, pero también usa el método más nuevo para comenzar el karma.

/** * Start the tests using karma. * @param {boolean} singleRun - True means run once and end (CI), or keep running (dev) * @param {Function} done - Callback to fire when karma is done * @return {undefined} */ function startTests(singleRun, done) { var child; var excludeFiles = []; var fork = require(''child_process'').fork; var KarmaServer = require(''karma'').Server; var serverSpecs = config.serverIntegrationSpecs; if (args.startServers) { log(''Starting servers''); var savedEnv = process.env; savedEnv.NODE_ENV = ''dev''; savedEnv.PORT = 8888; child = fork(config.nodeServer); } else { if (serverSpecs && serverSpecs.length) { excludeFiles = serverSpecs; } } var server = new KarmaServer({ configFile: __dirname + ''/karma.conf.js'', exclude: excludeFiles, singleRun: singleRun }, karmaCompleted); server.start(); //////////////// function karmaCompleted(karmaResult) { log(''Karma completed''); if (child) { log(''shutting down the child process''); child.kill(); } if (karmaResult === 1) { done(''karma: tests failed with code '' + karmaResult); } else { done(); } } }


En caso de que alguien más venga aquí, no use la solución aceptada. Ocultará pruebas fallidas. Si necesita una solución rápida para modificar su tarea de prueba de gulp, puede usar la solución que se encuentra en este comment en https://github.com/gulpjs/gulp/issues/71 hilo de github.

gulp.src(src) // pipeline... .on(''error'', function (error) { console.error('''' + error); });


La forma correcta de resolver esto de acuerdo con la documentación de Karma y https://github.com/pkozlowski-opensource , es confiar en el mecanismo de observación de Karma en lugar de en el de Gulp:

gulp.task(''tdd'', function (done) { karma.start({ configFile: __dirname + ''/karma.conf.js'' }, done); });

Tenga en cuenta la omisión de singleRun: true .

La solución temporal de @ McDamon funcionará para gulp.watch , pero no desea tragar códigos de salida como esos cuando se ejecuta en un servidor de CI.

Gulp también está reelaborando cómo manejan los códigos de salida en escenarios como este. Vea https://github.com/gulpjs/gulp/issues/71 y la otra docena de problemas relacionados.


Lo que funcionó para mí y me dio un buen mensaje de error formateado es proporcionar una instancia de Error para la devolución de llamada done .

gulp.task(''test'', function(done) { karma.start({ configFile: __dirname + ''/karma.conf.js'', singleRun: true }, function(result) { if (result > 0) { return done(new Error(`Karma exited with status code ${result}`)); } done(); }); });


Ninguna de estas soluciones funcionó correctamente para mí usando gulp 3.9.1 y karma 1.1.1. Agregando una referencia a la instalación de gulp-util npm install --save-dev gulp-util y actualizando la tarea a la siguiente, corrige muy bien el error, manteniendo el estado de salida correctamente.

var gutil = require(''gulp-util''); gulp.task(''test'', function (done) { new Server({ configFile: __dirname + ''/karma.conf.js'', singleRun: true }, function(err){ if(err === 0){ done(); } else { done(new gutil.PluginError(''karma'', { message: ''Karma Tests failed'' })); } }).start(); });


No estoy seguro acerca de Ubuntu, pero estaba obteniendo un error similar en Windows, y la instalación de una versión posterior lo arregló de inmediato así:

npm install -g [email protected] npm install [email protected]


Si desea regresar con un código de error, y desea ver el resultado de error de Karma pero no el de la pila de Gulp (probablemente no relacionado):

gulp.task(''test'', function() { karma.start({ configFile: __dirname + ''/karma.conf.js'', singleRun: true }, function(karmaExitStatus) { if (karmaExitStatus) { process.exit(1); } }); });


esta es la forma en que Gulp dice que tus pruebas han fallado y que el karma salió con un código de retorno de 1. Por qué querrías hacerte tú mismo y no pasar el error como un mensaje me desconcierta.


gulp.task(''test'', function(done) { karma.start({ configFile: __dirname + ''/karma.conf.js'', singleRun: false }, done); });

al pasar singleRun: false argumento singleRun: false evitará que el proceso devuelva un valor diferente de 0 (lo que significaría un error y saldrá gulp).

Ejecutar con singleRun: true si solo singleRun: true su prueba desde una línea de comandos, no forma parte de un conjunto de integración continua.