我正在尝试用frisby.js编写一个测试用例来检查证书的状态。测试应在证书到期前n天失败,其中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();问题是,expect没有得到jasmine-node测试运行程序的验证。使用执行此代码
jasmine-node ./https_spec.js将导致:
Finished in 0.358 seconds
1 test, 0 assertions, 0 failures, 0 skipped所以断言
expect(todayDate < certificateDate).toBe(true);不会被执行。我假设这是因为nodejs异步执行代码,因此在执行断言之前测试就结束了。
有人知道,我如何强制执行此断言并进入test-result?
谢谢和问候,Jo
发布于 2015-12-29 23:35:54
我没有找到一个基于frisby.js的解决方案,但是使用标准的jasmine语法来支持异步,它似乎可以工作。由于frisby测试是由jasmine-node运行器执行的,因此我可以将其与其他frisby测试一起执行。
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();
});
});
});https://stackoverflow.com/questions/34501048
复制相似问题