2014-03-26 61 views
11

我需要测试的API通过HTTPS送达mochasuper test (证书都没有过期)的NodeJS HTTPS API测试 - “DEPTH_ZERO_SELF_SIGNED_CERT”

这是服务器的一个要点是:

... 
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 

}); 

,这是要测试

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

我试图采用t检验路线他的代码在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(); 
       } 
     }); 
    }); 
}); 

但测试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) 

虽然使用普通HTTP测试是PASSING

回答

11

只是其他人谁也想该怎么办。 添加您的test.js的thison顶部,你将被罚款:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; 
+0

如果这样做了很多测试,我建议在makefile中添加'NODE_TLS_REJECT_UNAUTHORIZED = 0',因此它将对所有测试进行设置。例如'NODE_ENV = test NODE_TLS_REJECT_UNAUTHORIZED = 0 ./node_modules/.bin/mocha --recursive --timeout 5000 --reporter spec“./**/ modules/*/test/**/*。js”' – diosney