如何断言 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);
但是,如果我使用 Chakram
,getHeader
函数会出错并显示 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);
});
我有一个 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);
但是,如果我使用 Chakram
,getHeader
函数会出错并显示 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);
});