Як протестувати серверний код nodejs за допомогою Karma (тестакуляр)


87

Як налаштувати Karma для запуску мого внутрішнього модульного тестування (написаного з Mocha)? Якщо я додаю свій сценарій тестування до сервера files = [], він не вказує, що requireце невизначено.


Це МОЖЕ зробити, подивіться на мій проект: github.com/noamtcohen/Narma
noamtcohen

Відповіді:


83

Ти ні. Karma призначена лише для тестування коду на основі браузера. Якщо у вас є проект з тестами мокки на серверній панелі та кармою / моккою на передній панелі, спробуйте відредагувати файл package.json під сценаріями, щоб встановити для тесту:mocha -R spec && karma run karma.con

Тоді, якщо npm testповерне true, ви будете знати, що це безпечно фіксувати або розгортати.


Дякую! Я знайшов рішення за допомогою Grunt, яке я вже планував створити у своєму проекті. Дивіться мою власну відповідь.
Sylvain

Тоді всі тестові програми для JS покладаються на браузер? Це марно.

4
Мокко та Жасмин не покладаються на браузер, і коли ви хочете запустити на безголовому браузері, подумайте про використання phantomjs.
Ден Кон

2
Зверніть увагу, що покладатися на браузер для тестування - це НЕ щось погане. Існують різні типи тестів, і наскрізне тестування є дійсним, залежно від ваших потреб. Навіть тестування візуальної регресії (див. Хакслі на Facebook) є важливим у деяких випадках.
Ciro Costa

15

Здається, цього неможливо зробити (спасибі @dankohn). Ось моє рішення за допомогою Grunt:

  • Карма: оновіть файл karma.conf.js

    • встановити autoWatch = false;
    • встановити singleRun = true;
    • встановити browsers = ['PhantomJS'];(щоб мати вбудовані результати)
  • Бурчання:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • налаштувати два завдання grunt (див. файл grunt нижче)

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 (необов’язково): налаштуйте grunt-watch для запуску після зміни специфікаційних файлів або файлів, що перевіряються.

  • запустити все за допомогою gruntкоманди.


3
Отже, вам все-таки потрібен браузер, просто браузер безголовий. Наскільки марно, однозначно не використовувати карму для тестування на стороні сервера.

5
Привіт, це не використовує карму для бекенда, а моку, тому жодного браузера. Це просто зручний спосіб запуску всіх ваших тестів, як тільки ви збережете файл.
Sylvain

Хоча мені не дуже потрібна Карма для того, що я робив, це призвело мене до простого шляху, щоб налаштувати бурчання для автоматичного запуску моїх тестів мокко, тож дякую за це.
Michael Oryl

Цікавий підхід. Але як ви гарантуєте належне розпізнавання глобальних компаній «Вітрила» під час ваших тестів?
dmvianna
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.