简体   繁体   English

使用mocha和超级测试进行NodeJS HTTPS API测试 - “DEPTH_ZERO_SELF_SIGNED_CERT”

[英]NodeJS HTTPS API testing with mocha and super test -“DEPTH_ZERO_SELF_SIGNED_CERT”

I need to test an API served via HTTPS with mocha and super test (the certificate are not expired) 我需要使用mochasuper test通过HTTPS提供的API(证书未过期)

This is a gist of the server : 这是服务器的要点:

...
var app = express();
var _options = {
    key: fs.readFileSync('my-key.pem');,
    cert: fs.readFileSync('my-cert.pem')
};

// Start HTTPS server
https.createServer(_options, app).listen(app.get('port'), app.get('ip'), function () {

 // ok or not logs

});

and this is the route to be tested 这是要测试的路线

app.get('/hello',function (req, res) {
   res.json(200);
});

I'm trying to test with this code in test/test.js 我正在尝试使用test/test.js代码进行test/test.js

    var supertest = require('supertest'),
        api = supertest('https://localhost:3000');

describe('Hello test', function () {

      it('hello', function (done) {

        api.get('/hello')
               .expect(200)
               .end(function (err, res) {
                                        if (err) {
                                                   done(err);
                                        } else {
                                                   done();
               }
         });
    });
});

but the test FAILs with the following error : 但测试FAILs ,出现以下错误:

    enter Error: DEPTH_ZERO_SELF_SIGNED_CERT
  at SecurePair.<anonymous> (tls.js:1349:32)
  at SecurePair.EventEmitter.emit (events.js:92:17)
  at SecurePair.maybeInitFinished (tls.js:962:10)
  at CleartextStream.read [as _read] (tls.js:463:15)
  at CleartextStream.Readable.read (_stream_readable.js:320:10)
  at EncryptedStream.write [as _write] (tls.js:366:25)
  at doWrite (_stream_writable.js:219:10)
  at writeOrBuffer (_stream_writable.js:209:5)
  at EncryptedStream.Writable.write (_stream_writable.js:180:11)
  at write (_stream_readable.js:573:24)
  at flow (_stream_readable.js:582:7)
  at Socket.pipeOnReadable (_stream_readable.js:614:5)
  at Socket.EventEmitter.emit (events.js:92:17)
  at emitReadable_ (_stream_readable.js:408:10)
  at emitReadable (_stream_readable.js:404:5)
  at readableAddChunk (_stream_readable.js:165:9)
  at Socket.Readable.push (_stream_readable.js:127:10)
  at TCP.onread (net.js:526:21)

While using plain HTTP the test is PASSING 尽管使用普通HTTP该测试PASSING

just for everyone else who is also wondering what to do. 只为其他人也想知道该怎么做。 Add thison top of your test.js and you will be fine: 将它添加到test.js的顶部,你会没事的:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM