Como testar o código de backend nodejs com Karma (testacular)


87

Como configuro o Karma para executar meus testes de unidade de back-end (escritos com Mocha)? Se eu adicionar meu script de teste de back-end ao files = [], ele falha, declarando que requireé indefinido.


Isso PODE ser feito, dê uma olhada no meu projeto: github.com/noamtcohen/Narma
noamtcohen

Respostas:


83

Você não. Karma serve apenas para testar o código baseado em navegador. Se você tiver um projeto com testes mocha no back-end e karma / mocha no front end, tente editar seu package.json em scripts para definir o teste para:mocha -R spec && karma run karma.con

Então, se npm testretornar verdadeiro, você saberá que é seguro confirmar ou implantar.


Obrigado! Eu encontrei uma solução usando o Grunt que já estava planejando configurar no meu projeto. Veja minha própria resposta.
Sylvain

Basicamente, todos os executores de teste para JS dependem de um navegador? Isso é inútil.

4
O Mocha e o Jasmine não dependem de um navegador e, quando você quiser executar em um navegador sem interface, considere o uso de phantomjs.
Dan Kohn

2
Observe que confiar em um navegador para teste NÃO é algo ruim. Existem diferentes tipos de testes e os testes ponta a ponta são válidos, dependendo de suas necessidades. Até mesmo testar a regressão visual (veja o huxley do Facebook) é importante em alguns casos.
Ciro Costa

15

Parece que não pode ser feito (obrigado @dankohn). Aqui está minha solução usando o Grunt:

  • Karma: atualize seu arquivo karma.conf.js

    • conjunto autoWatch = false;
    • conjunto singleRun = true;
    • definido browsers = ['PhantomJS'];(para ter resultados embutidos)
  • Grunhido:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • configurar as duas tarefas grunt (ver arquivo grunt abaixo)

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 o grunt-watch para ser executado após alterar os arquivos de especificação ou os arquivos a serem testados.

  • execute todos usando o gruntcomando.


3
Portanto, você ainda precisa de um navegador, é só que ele é um navegador sem cabeça. Que inútil, definitivamente não usar karma para testes do lado do servidor.

5
Olá, não estou usando karma para back-end, estou usando mocha, portanto, nenhum navegador. Esta é apenas uma maneira conveniente de executar todos os seus testes assim que salvar um arquivo.
Sylvain

Embora eu realmente não precisasse do Karma para o que estava fazendo, isso me levou a um caminho fácil para configurar o grunt para executar meus testes de mocha automaticamente, então, obrigado por isso.
Michael Oryl

Abordagem interessante. Mas como você garante que Sails globais sejam devidamente reconhecidos em seus testes?
dmvianna
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.