Kiểm tra javascript với Mocha - làm cách nào tôi có thể sử dụng console.log để gỡ lỗi kiểm tra?


104

Tôi đang sử dụng trình chạy thử nghiệm javascript "Mocha".

Tôi có một bài kiểm tra không thành công, vì vậy tôi muốn gỡ lỗi nó bằng cách sử dụng console.log.

Nhưng khi chạy các bài kiểm tra thì không có kết quả đầu ra (chỉ có kết quả kiểm tra từ Mocha). Có vẻ như Mocha đã bắt và đàn áp console.logđầu ra của tôi !

Làm cách nào để Mocha hiển thị đầu ra của tôi? (tại cho các bài kiểm tra không thành công)?

BIÊN TẬP:

Xin lỗi rất nhiều! - console.logkhông hoạt động trong quá trình kiểm tra! Tôi hẳn đã mong đợi nó chặn đầu ra và tôi đã không kiểm tra đúng mã của mình. Cảm ơn vì đã phản hồi. Vì vậy, ... điều đó đang được nói ... có lẽ nó thực sự sẽ là tốt để ngăn chặn đầu ra cho các bài kiểm tra vượt qua? hmm ...

Một lưu ý liên quan: Tôi muốn sử dụng console.logvì tôi đang gặp rất nhiều khó khăn khi cố gắng để trình gỡ lỗi Eclipse kết nối với node.js.

Tôi có phải là người duy nhất thấy điều này khó khăn không? Làm thế nào để các bạn gỡ lỗi node.js? Với một trình gỡ lỗi, hoặc với các console.logcâu lệnh?


Món hời! :) Hiện tại tôi vẫn đang 'gỡ lỗi' nút rất nhiều thông qua các bài kiểm tra moca. Tôi thực sự thấy một thời gian trong tương lai gần khi tôi có thể muốn đánh giá một số tùy chọn tại đây: stackoverflow.com/questions/1911015/…
Zach Bonham,

Tôi khuyên bạn không nên sử dụng Eclipse cho Node.js, nó thực sự không phải là môi trường tốt nhất để sử dụng IMO. JetBrains 'WebStorm là một IDE Node.js tuyệt vời, mặc dù nó tốn tiền. Nếu bạn đang tìm kiếm miễn phí, tôi thực sự thích Visual Studio Code mới, có hỗ trợ tích hợp tuyệt vời để gỡ lỗi Node và những thứ khác giúp cho việc phát triển Node trở nên tốt đẹp.
dsw88

@ dsw88 - Kinh nghiệm của tôi với WebStorm là nó hoạt động chậm lại khi cấu trúc tệp của chúng tôi bắt đầu lớn và sâu. Nhắc tôi về những ngày xưa với các ứng dụng Java.
kirk.burleson

2
Ngoài những gì @ dsw88 đã viết: Sử dụng Mã VS: Chèn "trình gỡ lỗi;" tuyên bố ở đâu đó trong mã của bạn. Bắt đầu kiểm tra của bạn với tùy chọn --inspect-brk và sử dụng hành động gỡ lỗi Mã VS "NodeJs đính kèm". Trình gỡ lỗi bắt đầu ở dòng đầu tiên trong tập lệnh mocha và bạn sẽ phải nhấn Tiếp tục một lần. Lần tiếp theo "trình gỡ lỗi;" đã đạt được tuyên bố, bạn tốt để đi.
FabianTe

Câu trả lời:


49

Bạn đang sử dụng tùy chọn Mocha nào?

Có lẽ nó là một cái gì đó để làm với phóng viên (-R) hoặc ui (-ui) được sử dụng?

console.log(msg);

hoạt động tốt trong quá trình chạy thử nghiệm của tôi, mặc dù đôi khi bị lẫn vào một chút ngốc nghếch. Có lẽ là do tính chất không đồng bộ của quá trình chạy thử nghiệm.

Đây là các tùy chọn (mocha.opts) tôi đang sử dụng:

--require should
-R spec
--ui bdd

Hmm..chỉ được thử nghiệm mà không có bất kỳ mocha.opts nào và console.logvẫn hoạt động.


4
log () thực sự lô TO ở đâu?
Tích

32

Nếu bạn đang kiểm tra mã không đồng bộ, bạn cần đảm bảo đặt done()trong lệnh gọi lại của mã không đồng bộ đó. Tôi đã gặp sự cố đó khi kiểm tra các yêu cầu http tới API REST.


20

Bạn cũng có thể đã đặt console.logsau một kỳ vọng không thành công và không có ý định, vì vậy dòng nhật ký của bạn không bao giờ được thực thi.


2
Đúng, đó là vấn đề của tôi, cảm ơn vì đã gợi ý điều này. Tôi đã di chuyển nhật ký bảng điều khiển đến TRƯỚC khi không thành công .expect và chúng hiển thị ngay bây giờ.
redfox05

-1

Sử dụng lib gỡ lỗi .

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

Sử dụng nó:

log('holi')

sau đó chạy:

DEBUG=server npm test

Và đó là nó!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.