Comment tester le code backend de nodejs avec Karma (testacular)


87

Comment configurer Karma pour exécuter mes tests unitaires backend (écrits avec Mocha)? Si j'ajoute mon script de test backend au files = [], il échoue en indiquant qu'il requiren'est pas défini.


Cela PEUT être fait, jetez un œil à mon projet: github.com/noamtcohen/Narma
noamtcohen

Réponses:


83

Vous ne le faites pas. Karma sert uniquement à tester le code basé sur un navigateur. Si vous avez un projet avec des tests mocha sur le backend et karma / mocha sur le front-end, essayez de modifier votre package.json sous scripts pour définir test sur:mocha -R spec && karma run karma.con

Ensuite, si npm testretourne true, vous saurez que vous pouvez valider ou déployer en toute sécurité.


Merci! J'ai trouvé une solution en utilisant Grunt que je prévoyais déjà de mettre en place dans mon projet. Voir ma propre réponse.
Sylvain

Fondamentalement, tous les testeurs pour JS s'appuient sur un navigateur alors? Cela ne sert à rien.

4
Mocha et Jasmine ne dépendent pas d'un navigateur, et lorsque vous souhaitez exécuter un navigateur sans tête, pensez à utiliser phantomjs.
Dan Kohn

2
Notez que compter sur un navigateur pour tester n'est PAS quelque chose de mal. Il existe différents types de tests et les tests de bout en bout sont valides, en fonction de vos besoins. Même le test de la régression visuelle (voir le huxley de Facebook) est important dans certains cas.
Ciro Costa

15

Il semble que cela ne puisse pas être fait (merci @dankohn). Voici ma solution en utilisant Grunt:

  • Karma: mettez à jour votre fichier karma.conf.js

    • ensemble autoWatch = false;
    • ensemble singleRun = true;
    • set browsers = ['PhantomJS'];(pour avoir des résultats en ligne)
  • Grognement:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • configurer les deux tâches grunt (voir le fichier grunt ci-dessous)

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 (facultatif): configurez grunt-watch pour qu'il s'exécute après la modification des fichiers de spécifications ou des fichiers à tester.

  • exécutez tout en utilisant la gruntcommande.


3
Vous avez donc toujours besoin d'un navigateur, c'est juste que le navigateur est sans tête. Comment inutile, certainement pas utiliser le karma pour les tests côté serveur.

5
Salut, cela n'utilise pas le karma pour le backend, cela utilise le moka, donc pas de navigateur. C'est juste un moyen pratique d'exécuter tous vos tests dès que vous enregistrez un fichier.
Sylvain

Bien que je n'avais pas vraiment besoin de Karma pour ce que je faisais, cela m'a conduit sur un chemin facile pour obtenir une configuration grognement pour exécuter mes tests moka automatiquement, alors merci pour cela.
Michael Oryl

Approche intéressante. Mais comment vous assurez-vous que les globaux Sails sont correctement reconnus dans vos tests?
dmvianna
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.