我尝试了一些不同的方法,并在不同的建议之间来回切换,但没有任何运气。最终,我需要测试应用程序的某些方面,这些方面位于可以通过请求头访问的功能标志后面。
我可能试图完成的东西是不可能与此实现,但我已附上我的代码示例下面,并在下面生成的日志。我希望添加的标题出现在日志输出中。
代码:
class myRequestHook extends RequestHook {
constructor () {
super()
}
async onRequest (e) {
e.requestOptions.headers['test-header'] = 'test-value'
}
async onResponse (e) {
}
}
const customHook = new myRequestHook()
const customLogger = RequestLogger('http://example.com', { logRequestHeaders: true })
fixture ('Request fixture')
.page('http://example.com/')
.requestHooks( [ customLogger, customHook ])
test('Request test', async () => {
console.log(customLogger.requests[0].request.headers)
})
日志:
{
host: 'example.com',
connection: 'keep-alive',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.115 Safari/537.36',
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'navigate',
'sec-fetch-dest': 'document',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9'
}
TestCafe的RequestLogger只记录原始的请求头,而不记录修改过的请求头。但是,这行代码确实可以工作。
e.requestOptions.headers['test-header'] = 'test-value'
TestCafe正确地修改了请求头。如果你想记录修改后的头,你应该扩展你的RequestHook
实现。