Come testare il codice backend nodejs con Karma (testacular)


87

Come imposto Karma per eseguire i miei unit test di backend (scritti con Mocha)? Se aggiungo il mio script di test back-end a files = [], non riesce affermando che requirenon è definito.


Questo può essere fatto, dai un'occhiata al mio progetto: github.com/noamtcohen/Narma
noamtcohen

Risposte:


83

Non lo fai. Karma serve solo per testare il codice basato su browser. Se hai un progetto con mocha test sul backend e karma / mocha sul front-end, prova a modificare il tuo package.json sotto gli script per impostare il test su:mocha -R spec && karma run karma.con

Quindi, se npm testrestituisce true, saprai che è sicuro eseguire il commit o la distribuzione.


Grazie! Ho trovato una soluzione utilizzando Grunt che stavo già pianificando di impostare nel mio progetto. Vedi la mia risposta.
Sylvain

Fondamentalmente tutti i test runner per JS si affidano a un browser, quindi? È inutile.

4
Mocha e Jasmine non si affidano a un browser e, quando desideri eseguire un browser headless, considera l'utilizzo di phantomjs.
Dan Kohn

2
Si noti che affidarsi a un browser per i test NON è qualcosa di negativo. Esistono diversi tipi di test e il test end to end è valido, a seconda delle esigenze. Anche testare la regressione visiva (vedi huxley di facebook) è importante in alcuni casi.
Ciro Costa

15

Sembra che non sia possibile (grazie @dankohn). Ecco la mia soluzione usando Grunt:

  • Karma: aggiorna il tuo file karma.conf.js

    • impostato autoWatch = false;
    • impostato singleRun = true;
    • set browsers = ['PhantomJS'];(per avere risultati in linea)
  • Grugnito:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • configurare le due attività grugnite (vedere il file grugnito di seguito)

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 (opzionale): configura grunt-watch in modo che venga eseguito dopo aver modificato i file delle specifiche o i file da testare.

  • esegui tutto usando il gruntcomando.


3
Quindi hai ancora bisogno di un browser, è solo che il browser è senza testa. Che inutile, sicuramente non usare il karma per i test lato server.

5
Ciao, questo non sta usando il karma per il backend, questo sta usando mocha, quindi nessun browser. Questo è solo un modo conveniente per eseguire tutti i test non appena si salva un file.
Sylvain

Anche se non avevo davvero bisogno di Karma per quello che stavo facendo, questo mi ha portato su un percorso facile per ottenere una configurazione grugnita per eseguire automaticamente i miei test di moka, quindi grazie per questo.
Michael Oryl

Approccio interessante. Ma come ti assicuri che le globali di Sails siano adeguatamente riconosciute nei tuoi test?
dmvianna
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.