Як протестувати серверний код 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.