Cara menguji kode backend nodejs dengan Karma (testacular)

87

Bagaimana cara menyiapkan Karma untuk menjalankan pengujian unit backend saya (ditulis dengan Mocha)? Jika saya menambahkan skrip pengujian backend saya ke files = [], gagal menyatakan bahwa requiretidak ditentukan.

Sylvain
sumber
Ini BISA dilakukan, lihat proyek saya: github.com/noamtcohen/Narma
noamtcohen

Jawaban:

83

Kamu tidak. Karma hanya untuk menguji kode berbasis browser. Jika Anda memiliki proyek dengan tes mocha di backend dan karma / mocha di bagian depan, coba edit package.json Anda di bawah skrip untuk menyetel pengujian ke:mocha -R spec && karma run karma.con

Kemudian, jika npm testmengembalikan true, Anda akan tahu aman untuk melakukan atau menerapkan.

Dan Kohn
sumber
Terima kasih! Saya menemukan solusi menggunakan Grunt yang sudah saya rencanakan untuk disiapkan dalam proyek saya. Lihat jawaban saya sendiri.
Sylvain
Pada dasarnya semua pelari uji untuk JS bergantung pada browser? Itu tidak berguna.
4
Mocha dan Jasmine tidak bergantung pada browser, dan jika Anda ingin menjalankan browser tanpa head, pertimbangkan untuk menggunakan phantomjs.
Dan Kohn
2
Perhatikan bahwa mengandalkan browser untuk pengujian BUKAN sesuatu yang buruk. Ada berbagai jenis pengujian dan pengujian ujung ke ujung valid, bergantung pada kebutuhan Anda. Bahkan pengujian regresi visual (lihat huxley facebook) penting dalam beberapa kasus.
Ciro Costa
15

Sepertinya itu tidak bisa dilakukan (terima kasih @dankohn). Inilah solusi saya menggunakan Grunt:

  • Karma: perbarui file karma.conf.js Anda

    • set autoWatch = false;
    • set singleRun = true;
    • set browsers = ['PhantomJS'];(untuk mendapatkan hasil sebaris)
  • Mendengus:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • konfigurasikan dua tugas grunt (lihat file grunt di bawah)

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 (opsional): konfigurasikan grunt-watch untuk dijalankan setelah mengubah file spesifikasi atau file yang akan diuji.

  • jalankan semua menggunakan gruntperintah.

Sylvain
sumber
3
Jadi anda tetap membutuhkan browser, hanya saja browser itu headless. Betapa tidak berguna, pasti tidak menggunakan karma untuk pengujian sisi server.
5
Hai, ini tidak menggunakan karma untuk backend, ini menggunakan mocha, jadi tidak ada browser. Ini hanyalah cara mudah untuk menjalankan semua pengujian Anda segera setelah Anda menyimpan file.
Sylvain
Meskipun saya tidak benar-benar membutuhkan Karma untuk apa yang saya lakukan, hal ini membawa saya ke jalan yang mudah untuk mendapatkan pengaturan kasar untuk menjalankan tes moka saya secara otomatis, jadi terima kasih untuk itu.
Michael Oryl
Pendekatan yang menarik. Tetapi bagaimana Anda memastikan bahwa Sails global dikenali dengan benar dalam pengujian Anda?
dmvianna