如何断言标头包含Chakram中的特定值

时间:2018-04-04 13:02:32

标签: javascript web-api-testing chakram

我的API的响应标头为Keep-Alive,其值为

Keep-Alive →timeout=15, max=100

我想声明值超时至少为10且最多为100.之前我使用的是Postman BDD库并且有这段代码

let keepAlive = response.getHeader("Keep-Alive");

        // Make sure it contains "max=##"
        let match = /max=(\d+)/.exec(keepAlive);
        expect(match).to.be.an("array").and.not.empty;

        // Make sure the max is between 98 and 100
        let max = parseInt(match[1]);
        expect(max).to.be.at.least(15).and.at.most(100); 

但是,如果我使用Chakram,则getHeader功能会错误地显示TypeError: response.getHeader is not a function。有没有人知道如何使用Chakram获取标题值。

1 个答案:

答案 0 :(得分:1)

这是在Chakram中获取标头值的方法。例如验证响应是否为json格式。 expect(response).to.have.header('content-type', 'application/json; charset=utf-8'));

Chakram返回的回复是一个承诺,应该这样处理。因此,保持“活着”#39;标题值:

return chakram.get(serverUrl, params)
.then( chakramResponse => {
    let keepAlive = chakramResponse.response.headers['Keep-Alive'];
    let match = /max=(\d+)/.exec(keepAlive);
    return expect(match).to.be.an("array").and.not.empty;
    let max = parseInt(match[1]);
    return expect(max).to.be.at.least(15).and.at.most(100); 
});