Как получить более качественные отчеты о тестировании в консоли?

У меня есть довольно простой файл karma.config.js

basePath = '../';


files = [
  JASMINE,
  JASMINE_ADAPTER,
  'js/lib/angular*.js',
  'test/lib/angular/angular-mocks.js',
  'js/**/*.js',
  'test/unit/**/*.js'
];

autoWatch = true;
browsers = ['PhantomJS'];


Когда я запускаю karma start config/karma.conf.js --single-run, я получаю следующий вывод

$ karma start config/karma.conf.js --single-run
[2013-06-24 23:47:08.750] [DEBUG] config - autoWatch set to false, because of singleRun
INFO [karma]: Karma server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9 (Mac)]: Connected on socket id LwMoWxzIbSUuBsvIqB_m
PhantomJS 1.9 (Mac): Executed 6 of 6 SUCCESS (0.073 secs / 0.02 secs)

Я искал что-то, чтобы сказать мне, как получить результаты тестов, которые регистрируются (например, SUCCESS Unit: services myService should behave)

Единственный способ увидеть результаты тестов — открыть Chrome и нажать «Отладка», а затем показать консоль инструментов разработчика. Я хочу, чтобы сообщения выводились на терминал, но я не могу понять, как заставить это работать.


person blockloop    schedule 25.06.2013    source источник
comment
Ужасное название для этого вопроса   -  person ErichBSchulz    schedule 28.05.2014
comment
Ага. Если я правильно помню, я в ярости напечатал этот заголовок после того, как слишком долго пытался его понять. Хорошо, что Google ищет больше, чем просто названия.   -  person blockloop    schedule 28.05.2014
comment
@ brettaf86 Кто-то исказил заголовок этого вопроса. Очевидно, что это не имеет ничего общего с HTML при чтении самого вопроса. Я собирался попытаться заменить заголовок, но, немного подумав, я не думаю, что понимаю вопрос достаточно, чтобы сделать это. (Что мне непонятно, так это то, ищете ли вы простой механизм отчета или хотите ли вы получить некоторую форму вывода из самого теста.) Не могли бы вы его пересмотреть?   -  person jpmc26    schedule 24.03.2015
comment
Вы правы, это не имеет ничего общего с HTML. Я искал консольного репортера и конкретно репортера karma-spec-reporter. Я снова отредактировал заголовок и удалил HTML.   -  person blockloop    schedule 25.03.2015


Ответы (5)


Исправлено установкой karma-spec-reporter.

npm install karma-spec-reporter --save-dev

и добавив этот мой karma.config.js

reporters: ['spec'],

Согласно документации по карме

По умолчанию Karma загружает все модули NPM, которые являются родственными ему модулями, и их имя соответствует karma-*.

но некоторым пользователям пришлось добавить следующее в свою конфигурацию

plugins: ['karma-spec-reporter']

person blockloop    schedule 26.06.2013
comment
У меня это не работало, пока я не указал в файле karma.conf.js karma-spec-reporter в качестве плагина; вот как выглядит мой массив плагинов -reporter' ], обратите внимание на karma-spec-reporter в конце - person danivicario; 19.10.2014
comment
Да, вы должны сообщить конфигу, что используете этот плагин. - person blockloop; 20.10.2014
comment
Если все ваши плагины начинаются с karma-, вам не нужно ссылаться ни на один из них. По умолчанию загружаются все karma-* плагины. karma-runner.github.io/0.12/config/plugins.html - person blues_driven; 18.02.2015
comment
Работает так, как описали @blues_driven и brettaf86. - person Steve K; 07.04.2015
comment
То же самое здесь .. пришлось добавить плагин .. Я пошел дальше и предложил изменить этот ответ. - person RavenHursT; 06.08.2015

Еще одна деталь — если вы сохраните «прогресс» репортера по умолчанию в karma.config.js, как показано ниже:

reporters: ["progress", "spec"]

или другой консольный репортер, вывод "spec" репортера не будет работать.

Вы должны оставить только «spec» или «spec» с другими репортерами браузера. Например:

reporters: ["spec", "coverage"]
person Fernando Ghisi    schedule 08.06.2016
comment
Правда, была такая же проблема. репортеры: [спецификация, освещение] работает - person Develobba; 11.12.2020

Вы также можете использовать Karma-mocha-reporter в качестве репортера, и у вас должен быть чистый отчет в вашей консоли.

npm i karma-mocha-reporter --save-dev

// karma.conf.js
module.exports = function(config) {
  config.set({
    frameworks: ['jasmine'],

    // reporters configuration
    reporters: ['mocha']
  });
};

Иногда, например, в среде @angular/cli, вам нужно сделать следующее:

plugins: [
   ...
   require('karma-mocha-reporter'),
   ...
]
person billyjov    schedule 11.11.2018


Вот моя рабочая (черновая) конфигурация без раздела "плагины" (вообще не совсем понимаю, зачем мне их указывать...):

package.json

  "devDependencies": {
    [...]
    "grunt-karma": "~0.9.0",
    "karma": "~0.12.24",
    "karma-jasmine": "~0.2.3",
    "karma-chrome-launcher": "~0.1.5",
    "karma-phantomjs-launcher": "~0.1.4",
    "karma-spec-reporter": "0.0.13"
  }

karma.conf.js

module.exports = function (config) {
    config.set({
        frameworks: ['jasmine'],
        reporters: ['spec'],
        browsers: ['PhantomJS']
    });
};

Gruntfile.js

    karma: {
        options: {
            configFile: 'karma.conf.js',
            files: [
                'app/libs/angular.js',
                'app/libs/angular-resource.js',
                'app/libs/angular-route.js',
                [...] 
                'app/modules/**/*-spec.js'
            ]
        },
        unit: {
            singleRun: true
        }
    }

Теперь, когда я запускаю grunt karma, сообщения из *-spec.js файлов (describe('message', function() ...)) хорошо отображаются в консоли.

person gvlax    schedule 06.11.2014