Node.js 的故事和 https post 请求

The tale of Node.js and the https post request

在过去的几周里,我一直在摆弄 Node.js 和 Mocha。碰巧遇到了一个问题,就是下面的问题。

我尝试测试 https post 请求,但结果与我预期的完全不同。 我可以选择测试超时或通过(当它应该失败时)。

你能告诉我一些吗hints/tips哪里出了问题?

var chai = require('chai');
var https = require('https');

var options = {
  hostname: "google.com",
  method: "POST"
};


describe("Connection tests", function(){
 it("should return 404", function(done){
  https.request(options, function(res) {
    console.log('STATUS: ' + res.statusCode);
    chai.expect(res.statusCode).to.equal(404);
    done(); //if done is here it times out.
  });
      //done - if done is here it returns success instead failure.
 });
});

这是该问题的替代解决方案:

我使用 request

而不是 https

var chai = require('chai');
var request = require('request');

describe("Connection tests", function(){
 it("is the request approach", function(done){
  request({
   url: "https://www.google.com",
   method: "POST",
   json: true
  }, function(error, response, body){
   console.log(response.statusCode);
   chai.expect(response.statusCode).to.equal(405);
   done();
  });
 });
});

我知道我实际上并没有发布任何内容,一个简单的 GET 就足够了,但是嘿,宝贝们!

你需要在请求上调用.end来完成请求的发送(否则Node会先等待更多的数据写入):

https.request(options, function(res) {
  console.log('STATUS: ' + res.statusCode);
  chai.expect(res.statusCode).to.equal(404);
  done();
}).end(); // <-- here