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

How to assert a header contains specific value in Chakram

我有一个 API,它的响应 header 为 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); 

但是,如果我使用 ChakramgetHeader 函数会出错并显示 TypeError: response.getHeader is not a function。有谁知道如何使用 Chakram 获得 header 值。

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

Chakram 返回的响应是一个承诺,应该这样处理。所以得到 'keep-Alive' header 值:

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); 
});