Как протестировать бэкэнд-код nodejs с помощью Karma (testacular)


87

Как мне настроить Karma для запуска моих внутренних модульных тестов (написанных с помощью Mocha)? Если я добавлю свой тестовый скрипт серверной части в файл files = [], он не сможет указать, что requireэто не определено.


Это МОЖНО сделать, взгляните на мой проект: github.com/noamtcohen/Narma
— noamtcohen

Ответы:


83

Вы этого не сделаете. Карма предназначена только для тестирования кода на основе браузера. Если у вас есть проект с тестами мокко на бэкэнде и карма / мокко на фронтенде, попробуйте отредактировать свой package.json в скриптах, чтобы установить test на:mocha -R spec && karma run karma.con

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


Благодарность! Я нашел решение с использованием Grunt, которое я уже планировал использовать в своем проекте. Смотрите мой собственный ответ.
— Сильвен

Значит, все участники тестов для JS полагаются на браузер? Это бесполезно.

4
Mocha и Jasmine не полагаются на браузер, и если вы хотите запустить браузер без головы, подумайте об использовании phantomjs.
— Дэн Кон

2
Обратите внимание, что полагаться на браузер для тестирования - это НЕ плохо. Существуют разные виды тестов, и в зависимости от ваших потребностей допустимо сквозное тестирование. В некоторых случаях важно даже тестирование визуальной регрессии (см. Хаксли на facebook).
— Чиро Коста

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

Хотя мне действительно не нужна Карма для того, что я делал, это привело меня к простому пути, чтобы получить настройку grunt для автоматического запуска моих тестов мокко, так что спасибо за это.
— Michael Oryl

Интересный подход. Но как обеспечить правильное распознавание глобальных объектов Sails в ваших тестах?
— dmvianna
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.