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
在过去的几周里,我一直在摆弄 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
而不是 httpsvar 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