87 votes

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

Comment puis-je configurer Karma pour exécuter mes tests unitaires backend (écrits avec Mocha) ? Si j'ajoute mon test backend script à la section files = [] il échoue en déclarant que require est indéfinie.

0 votes

Ce site CAN être fait, regardez mon projet : github.com/noamtcohen/Narma

84voto

dankohn Points 6999

Tu ne le fais pas. Karma est uniquement destiné à tester du code basé sur un navigateur. Si vous avez un projet avec des tests mocha sur l'arrière-plan et karma/mocha sur l'avant-plan, essayez de modifier votre package.json sous scripts pour définir test sur : mocha -R spec && karma run karma.con

Alors, si npm test retourne vrai, vous saurez qu'il est possible de livrer ou de déployer en toute sécurité.

0 votes

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

0 votes

En fait, tous les programmes de test pour JS reposent sur un navigateur, alors ? C'est inutile.

4 votes

Mocha et Jasmine ne s'appuient pas sur un navigateur, et lorsque vous voulez fonctionner sur un navigateur sans tête, pensez à utiliser phantomjs.

15voto

Sylvain Points 5439

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

    • set autoWatch = false;
    • set 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écification ou des fichiers à tester.

  • exécuter tout en utilisant grunt comando.

3 votes

Donc, vous avez toujours besoin d'un navigateur, c'est juste que le navigateur est un navigateur sans tête. Comme c'est inutile, je n'utiliserai certainement pas Karma pour les tests côté serveur.

6 votes

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

0 votes

Bien que je n'aie pas vraiment eu besoin de Karma pour ce que je faisais, cela m'a conduit sur un chemin facile pour configurer grunt afin d'exécuter mes tests mocha automatiquement, donc merci pour cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X