簡體   English   中英

節點測試和console.log問題

[英]Node testing and console.log issues

我已經從Node:up and running book中建立了一個簡單的節點服務器和測試程序。 當我通過debug進行跟蹤時,它似乎工作正常,但我很好奇為什么console.log不向終端輸出任何信息。

服務器,app.js

var express = require('express');
var http = require('http');

var app = express();
app.set('port', process.env.PORT || 8000)

app.use(express.urlencoded());
app.use(express.json());
app.use(express.logger('dev'));


var tweets = [];

app.get('/', function (req, res) {
    res.send('Welcome to Node Twitter');
});

app.post('/send', function(req, res) {
if (req.body && req.body.tweet) {
    tweets.push(req.body.tweet);
    res.send({status:"ok", message:"Tweet received"});
} else {
    // no tweet ?
    res.send({status:"nok", message:"No tweet received"});
}
});

app.get('tweets', function (req, res) {
res.send(tweets);
});

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

測試腳本test.js

var http = require('http');
assert = require('assert');

var opts = {
host: 'localhost',
port: 8000,
path: '/send',
method: 'POST',
headers: {'content-type':'application/x-www-form-urlencoded'}   
}   

var req = http.request(opts, function(res) {
res.setEncoding('utf8');

console.log("Sending test");

var data = "";
res.on('data', function(d) {
    data += d;
})



res.on('end', function() {
    assert.strictEqual(data, '{"status":"ok", "message":"Tweet received"}');
    console.log("test");

})
})

req.write('tweet=test')
req.end

會喜歡一些建議。

事件end永遠不會被觸發,因為您不會調用函數req.end 您保持http請求/連接打開。 你永遠不會完成。

請嘗試:

req.end();

考慮一下以下兩者之間的區別:

console.log('HI');
console.log;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM