Menguji javascript dengan Mocha - bagaimana cara menggunakan console.log untuk men-debug pengujian?

104

Saya menggunakan runner pengujian javascript "Mocha".

Saya memiliki pengujian yang gagal, jadi saya akan men-debugnya menggunakan console.log.

Tetapi ketika tes dijalankan, tidak ada output (hanya hasil tes dari Mocha). Sepertinya Mocha telah menangkap dan menekan console.logkeluaran saya !

Bagaimana saya bisa mendapatkan Mocha untuk menunjukkan keluaran saya? (di untuk tes yang gagal)?

EDIT:

Permintaan maaf yang besar! - console.logbekerja selama tes! Saya pasti mengharapkannya untuk menekan output, dan saya tidak memeriksa kode saya sendiri dengan benar. Terima kasih telah menanggapi. Jadi ... yang dikatakan ... mungkin akan lebih baik untuk menekan output untuk tes yang lulus? hmm ...

Pada catatan terkait: Saya ingin menggunakan console.logkarena saya mengalami banyak masalah saat mencoba mendapatkan debugger Eclipse untuk menyambung ke node.js.

Apakah saya satu-satunya yang menganggap ini rumit? Bagaimana kalian men-debug node.js? Dengan debugger, atau dengan console.logpernyataan?

Nick Perkins
sumber
Kesepakatan bagus! :) Saat ini saya masih banyak node 'debugging' melalui tes moca. Saya melihat waktu dalam waktu dekat ketika saya mungkin ingin mengevaluasi beberapa opsi di sini: stackoverflow.com/questions/1911015/…
Zach Bonham
Saya menyarankan agar Anda tidak menggunakan Eclipse untuk Node.js, ini sebenarnya bukan lingkungan terbaik untuk menggunakan IMO. WebStorm JetBrains adalah IDE Node.js yang bagus, meskipun membutuhkan uang. Jika Anda mencari yang gratis, saya sangat menyukai Visual Studio Code yang baru, yang memiliki dukungan bawaan yang bagus untuk debugging Node dan hal-hal lain yang membuat pengembangan Node bagus.
dsw88
@ dsw88 - Pengalaman saya dengan WebStorm adalah bahwa WebStorm melambat setelah struktur file kita mulai menjadi besar dan dalam. Mengingatkan saya pada masa lalu dengan aplikasi Java.
kirk.burleson
2
Selain apa yang ditulis @ dsw88: Use VS Code: Insert a "debugger;" pernyataan di suatu tempat di kode Anda. Mulai pengujian Anda dengan opsi --inspect-brk dan gunakan tindakan debugging VS Code "NodeJs attach". Debugger mulai dari baris pertama dalam skrip mocha dan Anda harus menekan Lanjutkan sekali. Kali berikutnya Anda "debugger;" pernyataan tercapai, Anda siap berangkat.
FabianTe

Jawaban:

49

Opsi Mocha apa yang Anda gunakan?

Mungkin ada hubungannya dengan reporter (-R) atau ui (-ui) digunakan?

console.log(msg);

berfungsi dengan baik selama pengujian saya, meskipun terkadang dicampur dengan sedikit konyol. Agaknya karena sifat asinkron dari pengujian yang dijalankan.

Berikut adalah opsi (mocha.opts) yang saya gunakan:

--require should
-R spec
--ui bdd

Hmm..hanya diuji tanpa mocha.opts dan console.logmasih berfungsi.

Zach Bonham
sumber
4
di mana log () sebenarnya lot TO?
PositiveGuy
32

Jika Anda menguji kode asinkron, Anda harus memastikan untuk menempatkan done()dalam callback kode asinkron tersebut. Saya mengalami masalah itu saat menguji permintaan http ke REST API.

Kevin C.
sumber
20

Anda mungkin juga menempatkan console.logharapan Anda setelah yang gagal dan tidak tertangkap, sehingga baris log Anda tidak pernah dieksekusi.

qix
sumber
2
Ya, itu masalah saya, terima kasih telah menyarankannya. Saya memindahkan log konsol ke SEBELUM kegagalan .expect, dan mereka muncul sekarang.
redfox05
-1

Gunakan lib debug .

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

Gunakan:

log('holi')

lalu lari:

DEBUG=server npm test

Dan itu dia!

Sebastián Lara
sumber