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.