[英]Testing with Mocha in Node.js
在使用mocha編寫的測試中進行console.logging記錄時,我在終端中的行為確實不一致。 我們正在運行一個node.js服務器並正在運行socket.io。 出於某種原因,console.log是否僅在某些時間不會進入終端? 我真的很困惑這種行為。
➜ tests git:(master) ✗ mocha test-chat-server.js
hello world
echo
✓ echos message (68ms)
On Connect Things Should Happen
✓ initial connection events
disconnected
i'm here
2 passing (93ms)
➜ tests git:(master) ✗ mocha test-chat-server.js
hello world
echo
✓ echos message (61ms)
On Connect Things Should Happen
✓ initial connection events
2 passing (77ms)
我運行mocha測試的這兩次之間的區別是第一次測試運行中出現的console.log語句(已斷開連接,我在這里)。 它們沒有出現在我進行的第二次測試中。
編輯:發布我的測試代碼以回應評論(謝謝!)
var should = require('should');
var socket = require('socket.io-client')('http://localhost:3000');
describe("echo", function () {
var server,
options ={
transports: ['websocket'],
'force new connection': true
};
it("echos message", function (done) {
var client = socket.connect("http://localhost:3000", options);
client.once("connect", function () {
client.once("echo", function (message) {
message.should.equal("Hello World");
client.disconnect();
done();
});
client.emit("echo", "Hello World");
});
done();
});
});
describe("On Connect Things Should Happen", function() {
it('initial connection events', function() {
should.exist(socket);
socket.open();
socket.compress(false).emit('an event', { some: 'data' });
socket.on('error', function() {
console.log('error');
});
socket.connect();
socket.on('disconnect', function(connection) {
console.log('disconnected');
console.log("i'm here");
});
socket.on('connect', function(connection) {
console.log('connected');
});
});
});
您正陷入傳統的節點異步陷阱。 您的“事情應該發生”測試有時會在斷開連接事件發生之前返回,有時則不會。
您需要以與在“回顯消息”測試中相同的方式來處理完功能。 准時,它應該像這樣:
socket.on('disconnect', function(connection) {
console.log('disconnected');
console.log("i'm here");
done()});
總的來說,我不確定該測試可以處理所有這些不同的回調。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.