Тестирование javascript с помощью Mocha - как я могу использовать console.log для отладки теста?

105

Я использую средство запуска тестов javascript "Mocha".

У меня есть тест, который не работает, поэтому я хотел бы отладить его, используя console.log.

Но при запуске тестов нет вывода (только результаты тестов от Mocha). Кажется, что Mocha захватил и подавил мой console.logвывод!

Как я могу заставить Mocha показать мой результат? (в случае неудачных тестов)?

РЕДАКТИРОВАТЬ:

Огромные извинения! - console.logработает во время тестов! Я, должно быть, ожидал, что он подавит вывод, и я не проверил должным образом свой собственный код. Спасибо за ответ. Итак ... как говорится ... может быть, действительно было бы неплохо подавить вывод для тестов, которые проходят? хм ...

По соответствующему примечанию: я хочу использовать, console.logпотому что у меня много проблем с попыткой заставить отладчик Eclipse подключиться к node.js.

Я единственный, кому это сложно? Как вы, ребята, отлаживаете node.js? С отладчиком или с console.logоператорами?

Ник Перкинс
источник
Хорошая сделка! :) Прямо сейчас я все еще очень много «отлаживаю» узел с помощью тестов moca. Я действительно вижу время в ближайшем будущем, когда мне, возможно, захочется оценить некоторые из вариантов здесь: stackoverflow.com/questions/1911015/…
Зак Бонэм,
Я бы посоветовал вам не использовать Eclipse для Node.js, это действительно не лучшая среда для использования IMO. WebStorm от JetBrains - отличная IDE для Node.js, хотя и стоит денег. Если вы ищете что-то бесплатное, мне действительно понравился новый код Visual Studio, который имеет отличную встроенную поддержку для отладки Node и других вещей, которые делают разработку Node приятной.
dsw88 06
@ dsw88 - Мой опыт работы с WebStorm показывает, что он замедлился, когда наша файловая структура начала становиться большой и глубокой. Напомнил мне былые времена с приложениями Java.
kirk.burleson
2
В дополнение к тому, что написал @ dsw88: Use VS Code: Insert a «debugger;» заявление где-нибудь в вашем коде. Начните тест с опции --inspect-brk и используйте действие отладки VS Code «NodeJs attach». Отладчик запускается с первой строки в сценарии мокко, и вам нужно будет один раз нажать «Возобновить». В следующий раз, когда ваш "отладчик;" заявление достигнуто, все готово.
FabianTe

Ответы:

49

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

Может быть, это как-то связано с использованием репортера (-R) или ui (-ui)?

console.log(msg);

отлично работает во время моих тестовых прогонов, хотя иногда немного смешно. Предположительно из-за асинхронного характера тестового прогона.

Вот варианты (mocha.opts), которые я использую:

--require should
-R spec
--ui bdd

Хм .. только что протестировал без всяких мокко.оптов и console.logвсе еще работает.

Зак Бонэм
источник
4
где на самом деле log () много ТО?
PositiveGuy
32

Если вы тестируете асинхронный код, вам необходимо обязательно done()включить обратный вызов этого асинхронного кода. У меня возникла эта проблема при тестировании HTTP-запросов к REST API.

Кевин С.
источник
20

Возможно, вы также поместили свой результат console.logпосле ожидания, которое не выполняется и не перехвачено, поэтому ваша строка журнала никогда не выполняется.

qix
источник
2
Да, это была моя проблема, спасибо, что предложили это. Я переместил журналы консоли до сбоя .expect, и теперь они отображаются.
redfox05
-1

Используйте отладочную библиотеку.

import debug from 'debug'
const log = debug('server');

Используй это:

log('holi')

затем запустите:

DEBUG=server npm test

И это все!

Себастьян Лара
источник