Testowanie javascript za pomocą Mocha - jak mogę użyć console.log do debugowania testu?

105

Używam narzędzia do uruchamiania testów javascript „Mocha”.

Mam test, który kończy się niepowodzeniem, więc chciałbym go debugować za pomocą console.log .

Ale kiedy testy są uruchamiane, nie ma wyjścia (tylko wyniki testów z Mocha). Wygląda na to, że Mocha złapał i stłumił mójconsole.log twórczość!

Jak mogę sprawić, by Mocha wyświetlała mój wynik? (w przypadku testów, które kończą się niepowodzeniem)?

EDYTOWAĆ:

Ogromne przeprosiny! -console.log działa podczas testów! Musiałem się spodziewać, że zablokuje dane wyjściowe i nie sprawdziłem poprawnie własnego kodu. Dziękuję za odpowiedź. Więc ... to powiedziawszy ... może właściwie byłoby miło wyłączyć wyjście testów, które przeszły pomyślnie? hmm ...

A propos: Chcę użyć console.log ponieważ mam wiele problemów z próbą uzyskania debugera Eclipse, aby połączyć się z node.js.

Czy tylko ja uważam to za trudne? Jak debugujecie node.js? Z debugerem czy z console.loginstrukcjami?

Nick Perkins
źródło
Dobry interes! :) W tej chwili nadal bardzo mocno „debuguję” węzeł poprzez testy MOCA. Widzę moment w najbliższej przyszłości, kiedy mógłbym chcieć przeanalizować niektóre opcje tutaj: stackoverflow.com/questions/1911015/…
Zach Bonham
Sugerowałbym, aby nie używać Eclipse dla Node.js, to naprawdę nie jest najlepsze środowisko do korzystania z IMO. WebStorm firmy JetBrains to świetne środowisko IDE Node.js, chociaż kosztuje. Jeśli szukasz darmowego oprogramowania, naprawdę spodobał mi się nowy Visual Studio Code, który ma świetne wbudowane wsparcie dla debugowania Node i innych rzeczy, które sprawiają, że programowanie Node jest przyjemne.
dsw88
@ dsw88 - Moje doświadczenie z WebStorm jest takie, że zwolnił on znacznie, gdy nasza struktura plików zaczęła stawać się duża i głęboka. Przypomniał mi się dawne czasy z aplikacjami Java.
kirk.burleson
2
Oprócz tego, co napisał @ dsw88: Użyj kodu VS: wstaw "debugger;" instrukcja gdzieś w kodzie. Rozpocznij test z opcją --inspect-brk i użyj akcji debugowania VS Code „NodeJs attach”. Debugger uruchamia się w pierwszym wierszu skryptu mokka i trzeba raz nacisnąć Wznów. Następnym razem, gdy twój "debugger"; stwierdzenie zostanie osiągnięte, jesteś gotowy do pracy.
FabianTe

Odpowiedzi:

49

Jakich opcji mokki używasz?

Może ma to coś wspólnego z używaniem reportera (-R) lub ui (-ui)?

console.log(msg);

działa dobrze podczas moich przebiegów testowych, chociaż czasami jest trochę głupkowaty. Prawdopodobnie ze względu na asynchroniczny charakter przebiegu testu.

Oto opcje (mocha.opts), których używam:

--require should
-R spec
--ui bdd

Hmm ... po prostu przetestowany bez mokki. Działa i console.lognadal działa.

Zach Bonham
źródło
4
gdzie log () faktycznie lot TO?
PositiveGuy,
32

Jeśli testujesz kod asynchroniczny, musisz upewnić się, że został umieszczony done()w wywołaniu zwrotnym tego kodu asynchronicznego. Miałem ten problem podczas testowania żądań http do REST API.

Kevin C.
źródło
20

Być może umieściłeś również swoje console.logpo oczekiwaniu, które zawiodło i nie zostało przechwycone, więc Twój wiersz dziennika nigdy nie zostanie wykonany.

qix
źródło
2
Tak, to był mój problem, dzięki za zasugerowanie tego. Przeniosłem dzienniki konsoli do PRZED niepowodzeniem .expect i teraz są widoczne.
redfox05
-1

Użyj biblioteki debugowania .

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

Użyj tego:

log('holi')

następnie uruchomić:

DEBUG=server npm test

I to wszystko!

Sebastián Lara
źródło