Cómo probar el código backend de nodejs con Karma (testacular)

87

¿Cómo configuro Karma para ejecutar mis pruebas unitarias de backend (escritas con Mocha)? Si agrego mi script de prueba de backend al files = [], falla indicando que requireno está definido.

Sylvain
fuente
Esto PUEDE hacerse, eche un vistazo a mi proyecto: github.com/noamtcohen/Narma
noamtcohen

Respuestas:

83

Tu no Karma es solo para probar código basado en navegador. Si tiene un proyecto con pruebas de mocha en el backend y karma / mocha en el front-end, intente editar su package.json en scripts para configurar la prueba en:mocha -R spec && karma run karma.con

Luego, si npm testdevuelve verdadero, sabrá que es seguro comprometerse o implementar.

Dan Kohn
fuente
¡Gracias! Encontré una solución usando Grunt que ya estaba planeando configurar en mi proyecto. Vea mi propia respuesta.
Sylvain
Básicamente, entonces, ¿todos los corredores de prueba para JS se basan en un navegador? Eso es inútil.
4
Mocha y Jasmine no dependen de un navegador, y cuando desee ejecutar un navegador sin cabeza, considere usar phantomjs.
Dan Kohn
2
Tenga en cuenta que confiar en un navegador para realizar pruebas NO es algo malo. Hay diferentes tipos de pruebas y las pruebas de extremo a extremo son válidas, dependiendo de sus necesidades. Incluso probar la regresión visual (ver huxley de Facebook) es importante en algunos casos.
Ciro Costa
15

Parece que no se puede hacer (gracias @dankohn). Aquí está mi solución usando Grunt:

  • Karma: actualice su archivo karma.conf.js

    • conjunto autoWatch = false;
    • conjunto singleRun = true;
    • set browsers = ['PhantomJS'];(para tener resultados en línea)
  • Gruñido:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • configurar las dos tareas grunt (ver archivo grunt a continuación)

Gruntfile.js:

module.exports = function (grunt) {
  grunt.loadNpmTasks('grunt-simple-mocha');
  grunt.loadNpmTasks('grunt-karma');

  grunt.initConfig({
    simplemocha: {
      backend: {
        src: 'test/server-tests.js'
      }
    },
    karma: {
      unit: {
        configFile: 'karma.conf.js'
      }
    }
  });

  // Default task.
  grunt.registerTask('default', ['simplemocha', 'karma']);
};
  • Grunt (opcional): configure grunt-watch para que se ejecute después de cambiar los archivos de especificaciones o los archivos que se probarán.

  • ejecutar todo usando el gruntcomando.

Sylvain
fuente
3
Por lo tanto, todavía necesita un navegador, es solo que el navegador no tiene cabeza. Qué inútil, definitivamente no usar karma para las pruebas del lado del servidor.
5
Hola, esto no está usando karma para backend, esto está usando mocha, así que no hay navegador. Esta es solo una forma conveniente de ejecutar todas sus pruebas tan pronto como guarde un archivo.
Sylvain
Si bien realmente no necesitaba Karma para lo que estaba haciendo, esto me llevó por un camino fácil para configurar grunt para ejecutar mis pruebas de mocha automáticamente, así que gracias por eso.
Michael Oryl
Enfoque interesante. Pero, ¿cómo se asegura de que los globales de Sails se reconozcan correctamente en sus pruebas?
dmvianna