Войти в терминал после завершения набора тестов QUnit?

Когда мой набор тестов завершится, мне нужно вывести некоторую статистику, т.е. е. метаданные о тестах, собранные во время выполнения теста.

Я пытаюсь это:

QUnit.done(() => console.log("some meta info here"))

Это работает, когда я запускаю тесты в браузере.

Но когда я запускаю тесты в терминале, вывод console.log не отображается.

Вероятно, есть какой-то флаг отладки, но он включит все console.log сообщения и сильно загрязнит вывод.

Вместо этого мне нужно вывести одно конкретное сообщение на терминал, чтобы оно было зарегистрировано в CI.

PS console.log сообщения, отправленные во время выполнения теста, похоже, успешно попадают в терминал.

PPS Использование QUnit в приложении Ember CLI против Chrome без заголовка.


person Andrey Mikhaylov - lolmaus    schedule 23.08.2018    source источник
comment
сделанный хук называется безголовым? (например, что, если вы скажете process.exit(123) или что-то в этом роде? (На самом деле я понятия не имею, будет ли у вас доступ к процессу в любой области, в которой вы находитесь?   -  person NullVoxPopuli    schedule 23.08.2018
comment
Код выполняется в контексте браузера, у меня нет доступа к материалам Node.   -  person Andrey Mikhaylov - lolmaus    schedule 23.08.2018
comment
Вы пробовали другие уровни журнала? как console.warn, console.debug? Я не удивлюсь, если журнал будет отфильтрован из терминала из-за того, как часто он используется.   -  person NullVoxPopuli    schedule 23.08.2018
comment
Да никакого результата. В официальном примере используется console.log: api.qunitjs.com/callbacks/QUnit.done   -  person Andrey Mikhaylov - lolmaus    schedule 23.08.2018
comment
в какой файл вы помещаете QUnit.done()? Я хочу попробовать.   -  person NullVoxPopuli    schedule 23.08.2018
comment
Это проект Ember CLI. Например, файл может быть tests/test-helper.js.   -  person Andrey Mikhaylov - lolmaus    schedule 23.08.2018
comment
что-нибудь еще вы можете предоставить? Я добавил приведенную выше строку в свой test-helper.js, но мой линтер уловил это: `'QUnit' не определен. (no-undef)`, поэтому мне интересно, нужно ли импортировать QUnit? / может быть, это не глобально?   -  person NullVoxPopuli    schedule 23.08.2018
comment
Можете ли вы добавить модуль afterEach хук и попытаться использовать там console.log? Попытка выяснить, съедены ли консольные журналы или что-то с обратным вызовом done(). Если вы используете Ember (а я нет), то, возможно, вы могли бы попробовать использовать класс Ember.Logger вместо этого?   -  person Jordan Kasper    schedule 23.08.2018
comment
@NullVoxPopuli QUnit необходимо импортировать следующим образом: import QUnit from 'qunit';.   -  person Andrey Mikhaylov - lolmaus    schedule 23.08.2018
comment
@jakerella, я начинаю думать, что проблема не в QUnit, а в средстве запуска тестов Testem и его интеграции с QUnit. Что касается Ember.Logger, он использует console.log внутри и устарел.   -  person Andrey Mikhaylov - lolmaus    schedule 23.08.2018
comment
Хм... есть эта ошибка зарегистрирована в их репозитории github, но да, я Я почти уверен, что это вне QUnit, так как это работает в необработанном примере.   -  person Jordan Kasper    schedule 23.08.2018
comment
Эта ошибка связана с режимом браузера (с сервером), моя проблема связана с обычным режимом вывода терминала (без сервера).   -  person Andrey Mikhaylov - lolmaus    schedule 23.08.2018


Ответы (1)


Это было сложно, так как у меня никогда не было необходимости взаимодействовать с QUnit, как это, но вот мои выводы на каждом этапе пути:

Попытка 1:

введите здесь описание изображения Странная ошибка, я думал, что передал функцию обратного вызова :-\

Попытка 2:

введите здесь описание изображения Просмотрев документацию по Qunit.log, я понял, что неправильно его использовал. При переключении на console.log отображается начальное сообщение, но не конечное.

Попытка 3:

введите здесь описание изображения moduleDone напечатает что-нибудь в конце -- но он также напечатает каждый раз, когда вы используете слово module (после того, как все внутри закончит свою работу). Итак, я думаю, как хак, если QUnit.done никогда не перестанет работать, вы можете отслеживать количество запущенных модулей и выполненных модулей, убедиться, что каждый запущенный модуль завершен, и если это число равно 0 в конце, ваш тест люкс готов?

Попытка 4

введите описание изображения здесь Оказывается, это на самом деле полезно только в том случае, если вы хотите знать, что самый внешний модуль выполнен, потому что кажется, что несколько тестов не выполняются параллельно (что, вероятно, в любом случае лучше для стабильности теста).

Попытка 5

https://github.com/qunitjs/qunit/issues/1308

Похоже проблема с адаптером testem :(

person NullVoxPopuli    schedule 24.08.2018