Javascript'i Mocha ile test etme - bir testte hata ayıklamak için console.log'u nasıl kullanabilirim?


105

Javascript test çalıştırıcısı "Mocha" kullanıyorum.

Başarısız olan bir testim var, bu yüzden onu kullanarak hata ayıklamak istiyorum console.log.

Ancak testler yürütüldüğünde çıktı olmaz (sadece Mocha'dan alınan test sonuçları). Görünüşe göre Mocha çıktımı yakaladı ve bastırdı console.log!

Mocha'nın çıktımı göstermesini nasıl sağlayabilirim? (başarısız olan testler için)?

DÜZENLE:

Çok özür dilerim! - console.logtestler sırasında çalışıyor! Çıktıyı bastırmasını beklemeliydim ve kendi kodumu düzgün bir şekilde kontrol etmedim. Cevap verdiğiniz için teşekkürler. Öyleyse ... bu söyleniyor ... belki de geçen testler için çıktıyı bastırmak gerçekten güzel olurdu? hmm ...

İlgili bir not: console.logKullanmak istiyorum çünkü Eclipse hata ayıklayıcısını node.js'ye bağlanmaya çalışırken çok fazla sorun yaşıyorum.

Bunu aldatıcı bulan tek kişi ben miyim? Node.js'de nasıl hata ayıklayacaksınız? Bir hata ayıklayıcı ile console.logmi yoksa ifadelerle mi?


İyi anlaşma! :) Şu anda hala moca testleri aracılığıyla düğüm 'hata ayıklama' yapıyorum. Yakın gelecekte buradaki seçeneklerden bazılarını değerlendirmek isteyebileceğim bir zaman görüyorum: stackoverflow.com/questions/1911015/…
Zach Bonham

Node.js için Eclipse kullanmamanızı öneririm, gerçekten IMO kullanmak için en iyi ortam değil. JetBrains WebStorm, maliyeti olmasına rağmen harika bir Node.js IDE'sidir. Ücretsiz arıyorsanız, Node hata ayıklama ve Node geliştirmeyi güzel kılan diğer şeyler için harika yerleşik desteğe sahip yeni Visual Studio Code'u gerçekten beğeniyorum.
dsw88

@ dsw88 - WebStorm ile ilgili deneyimim, dosya yapımız genişlemeye ve derinleşmeye başladığında çok yavaşlamasıydı. Java uygulamaları ile eski günleri hatırlattı.
kirk.burleson

2
@ Dsw88'in yazdıklarına ek olarak: VS Kodunu Kullanın: Bir "hata ayıklayıcı" ekleyin; kodunuzda bir yerde ifade. Testinizi --inspect-brk seçeneğiyle başlatın ve VS Code hata ayıklama eylemi "NodeJs attach" seçeneğini kullanın. Hata ayıklayıcı, mocha komut dosyasının ilk satırından başlar ve bir kez Devam Et'e basmanız gerekir. Bir dahaki sefere "hata ayıklayıcınız"; ifadesine ulaşıldı, gitmekte fayda var.
FabianTe

Yanıtlar:


49

Hangi Mocha seçeneklerini kullanıyorsunuz?

Belki muhabir (-R) veya ui (-ui) kullanılan bir şeydir?

console.log(msg);

test çalıştırmalarımda iyi çalışıyor, ancak bazen biraz saçma bir şekilde karışıyor. Muhtemelen test çalışmasının zaman uyumsuz doğası nedeniyle.

İşte kullandığım seçenekler (mocha.opts):

--require should
-R spec
--ui bdd

Hmm .. mocha.opts olmadan test edildi ve console.loghala çalışıyor.


5
log () gerçekte nerede çoktur?
PositiveGuy

32

Eşzamansız kodu test ediyorsanız, eşzamansız kodun done()geri aramasına yerleştirdiğinizden emin olmanız gerekir . Bir REST API'ye http isteklerini test ederken bu sorunu yaşadım.


20

Ayrıca console.log, başarısız olan ve yakalanmayan bir beklentinizin peşine düşmüş olabilirsiniz, böylece günlük satırınız asla çalıştırılmaz.


2
Evet, bu benim sorunumdu, bunu önerdiğin için teşekkürler. Konsol günlüklerini başarısız .expect'ten ÖNCE'ye taşıdım ve şimdi gösteriliyorlar.
redfox05

-1

Hata ayıklama kitaplığını kullanın .

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

Kullanın:

log('holi')

o zaman koş:

DEBUG=server npm test

Ve bu kadar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.