Mocha로 JavaScript 테스트-console.log를 사용하여 테스트를 디버그하려면 어떻게해야합니까?


104

자바 스크립트 테스트 러너 "모카"를 사용하고 있습니다.

실패한 테스트가 있으므로 다음을 사용하여 디버깅합니다. console.log .

그러나 테스트가 실행되면 출력이 없습니다 (모카의 테스트 결과 만). 모카가 내console.log 출력을 !

Mocha가 내 출력물을 표시하도록하려면 어떻게해야합니까? (실패한 테스트의 경우)?

편집하다:

큰 사과! — console.log테스트 중에 작동합니다! 나는 그것이 출력을 억제 할 것으로 예상하고 있었음에 틀림 없었고, 내 자신의 코드를 제대로 확인하지 않았다. 응답 해 주셔서 감사합니다. 그래서 ... 그 말은 ... 실제로 통과 한 테스트의 출력을 억제하는 것이 좋을까요? 흠 ...

관련 메모에서 : console.logEclipse 디버거를 node.js에 연결하는 데 많은 문제가 있기 때문에 사용하고 싶습니다.

이것이 까다로운 사람은 나뿐입니까? 여러분들은 node.js를 어떻게 디버그합니까? 디버거를 사용하거나 console.log문을 사용합니까?


좋은 거래! :) 지금은 여전히 ​​moca 테스트를 통해 노드를 '디버깅'하고 있습니다. 가까운 장래에 몇 가지 옵션을 평가해야 할 때가 있습니다. stackoverflow.com/questions/1911015/…
Zach Bonham

Node.js 용 Eclipse를 사용하지 않는 것이 좋습니다. 실제로 IMO를 사용하는 데 가장 적합한 환경은 아닙니다. JetBrains의 WebStorm은 비용이 많이 들지만 훌륭한 Node.js IDE입니다. 무료를 찾고 있다면 Node 디버깅 및 Node 개발을 멋지게 만드는 기타 기능에 대한 훌륭한 기본 제공 지원을 제공하는 새로운 Visual Studio Code가 정말 마음에 들었습니다.
dsw88

@ dsw88-WebStorm에 대한 제 경험은 파일 구조가 크고 깊어지기 시작하면 속도가 느려지는 것입니다. 자바 앱을 사용하던 시절을 상기시켜주었습니다.
kirk.burleson 2010 년

2
@ dsw88이 작성한 것 외에도 : Use VS Code : Insert a "debugger;" 코드 어딘가에 문. --inspect-brk 옵션을 사용하여 테스트를 시작하고 VS Code 디버깅 작업 "NodeJs attach"를 사용합니다. 디버거는 mocha 스크립트의 첫 번째 줄에서 시작하며 Resume을 한 ​​번 눌러야합니다. 다음에 "디버거" 성명에 도달하면 갈 수 있습니다.
FabianTe

답변:


49

어떤 모카 옵션을 사용하고 있습니까?

리포터 (-R) 나 ui (-ui)를 사용하는 것과 관련이있는 것일까 요?

console.log(msg);

테스트 실행 중에 잘 작동하지만 때로는 약간 구피가 섞여 있습니다. 아마도 테스트 실행의 비동기 특성 때문일 것입니다.

사용중인 옵션 (mocha.opts)은 다음과 같습니다.

--require should
-R spec
--ui bdd

흠 .. mocha.opts없이 테스트했지만 console.log여전히 작동합니다.


4
log ()는 실제로 어디에 있습니까?
PositiveGuy

32

비동기 코드를 테스트하는 경우 done()해당 비동기 코드의 콜백에 배치해야 합니다. REST API에 대한 http 요청을 테스트 할 때 그 문제가 발생했습니다.


20

console.log실패하고 잡히지 않는 기대치를 뒤에 넣었을 수도 있으므로 로그 라인이 실행되지 않습니다.


2
네, 제 문제였습니다. 제안 해 주셔서 감사합니다. 콘솔 로그를 실패한 .expect 이전으로 이동했으며 지금 표시됩니다.
redfox05

-1

디버그 라이브러리를 사용하십시오 .

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

그걸 써:

log('holi')

그런 다음 실행하십시오.

DEBUG=server npm test

그리고 그게 다야!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.