使用frisby.js或jasmine-nodetesting证书到期

我试图写一个testing用frisby.js检查证书的状态。 在证书过期n天之前,testing应该失败,n在下面定义:

config.numberOfDaysBeforeTestFails 

我用这个代码试了一下:

 var frisby = require('frisby'); var config = require('../config'); //load own config-file var request = require('request'); frisby.create('https2.0 - Perperation') .get(config.server + '/testData') .auth(config.username, config.passwort) .after(function(err, res, body){ var auth = "Basic " + new Buffer(config.username + ":" + config.passwort).toString("base64"); var r = request({ url: '<serverURL>', requestCert: true, rejectUnauthorized: false, headers : { "Authorization" : auth } }); r.on('response', function(res) { var certificateInformation = res.req.connection.getPeerCertificate(); var certificateDate = new Date(Date.parse(certificateInformation.valid_to)); var todayDate = new Date(); todayDate.setDate(todayDate.getDate() + config.numberOfDaysBeforeTestFails); //Below does not get executed expect(todayDate < certificateDate).toBe(true); }); }) .toss(); 

问题是,预期没有得到茉莉花节点testrunnervalidation。 执行此代码

 jasmine-node ./https_spec.js 

将导致:

 Finished in 0.358 seconds 1 test, 0 assertions, 0 failures, 0 skipped 

所以这个断言

 expect(todayDate < certificateDate).toBe(true); 

没有被执行。 我假设,这是因为nodejs执行代码asynchronous,因此testing在断言执行之前结束。

有人知道,我如何强制这个断言被执行并进入testing结果?

感谢和问候,乔

我没有find一个基于frisby.js的解决scheme,但是用asynchronous支持的标准jasmine-syntax,它似乎可行。 而且,由于frisbytesting正在被茉莉花节点运动员执行,我可以和其他frisbytesting一起执行。

 var request = require('request'); var config = require('../config'); //load own config-file for global settings describe("https 2.0", function() { it("Certificate Test", function(done) { var auth = "Basic " + new Buffer(config.username + ":" + config.passwort).toString("base64"); var r = request({ url: config.server, requestCert: true, rejectUnauthorized: false, headers : { "Authorization" : auth } }); r.on('response', function(res) { var certificateInformation = res.req.connection.getPeerCertificate(); var certificateDate = new Date(Date.parse(certificateInformation.valid_to)); var todayDate = new Date(); todayDate.setDate(todayDate.getDate() + config.numberOfDaysBeforeTestFails); expect(todayDate).toBeLessThan(certificateDate); done(); }); }); });