在TestCafe中,我们有RequestHooks和RequestMocks。我希望我的页面为TestCafe进行API调用添加,以将数据添加到返回的响应中。
到目前为止我所拥有的:
import { RequestHook, RequestMock } from 'testcafe';
// option 1: RequestHook
class ModifyRequest extends RequestHook {
constructor (requestFilterRules) {
super(requestFilterRules, { includeBody: true });
}
async onRequest (event) {
// ...
}
async onResponse (event) {
const copy = JSON.parse(event.body.toString());
copy.test = 'test';
event.body = Buffer.from(JSON.stringify(copy), 'utf8');
// doesn't actually modify the response
}
}
// option 2: RequestMock
export const modifyRequest = RequestMock()
.onRequestTo(/processing/)
.respond((req, res) => {
console.log(res); // actual response not available
res.setBody({
data: 'original data here'
});
});
实际上如何进行API调用并将数据添加到响应中?
答案 0 :(得分:2)
据我了解,您只想模拟响应的一部分。目前,您无法使用RequestHooks
机制执行此操作。 RequestMock
修改完整的响应,RequestHook
不允许您修改响应body
。
答案 1 :(得分:1)
您需要将您的RequestMock作为一个钩子添加到夹具中:
fixture`<fixture-name>`
.page(<url>)
.requestHooks(modifyRequest);