Test Cafe-如何修改数据或将数据注入响应中?

时间:2019-12-19 17:55:41

标签: javascript xmlhttprequest hook e2e-testing testcafe

在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调用并将数据添加到响应中?

2 个答案:

答案 0 :(得分:2)

据我了解,您只想模拟响应的一部分。目前,您无法使用RequestHooks机制执行此操作。 RequestMock修改完整的响应,RequestHook不允许您修改响应body

答案 1 :(得分:1)

您需要将您的RequestMock作为一个钩子添加到夹具中:

fixture`<fixture-name>`
  .page(<url>)
  .requestHooks(modifyRequest);

此处的完整示例:https://github.com/proustibat/xke-introduction-testcafe/blob/58eb6b51548ae1d9498c853ee8f8b748e5623218/e2e/index.js#L64