javascript 我如何记录所有Testcafe请求到同一个URL?

xuo3flqw  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(142)

我多次点击某个URL以获取不同的信息(myEndpoint.dwr)
我特别感兴趣的是测试我对myEndpoint所做的第二次和第三次调用的数据。我如何从这两次调用中获得信息?
我定义了我的记录器并将其连接

const myEndpointUrl = `${base}/dwr/path/myEndpoint.dwr`
const logger = new RequestLogger(
   [myEndpointUrl],
  {
    logResponseHeaders: true,
    logResponseBody: true,
    stringifyResponseBody: true,
    logRequestBody: true,
    stringifyRequestBody: true,
    logRequestHeaders: true,
  }
);

fixture`Page I am testing`.page`${ladingPage}`
  .requestHooks(logger)
  .beforeEach(async (t) => {
    await t.useRole(_authenticatedUser).navigateTo(landingPage);
  });

test('the thing i am testing'), async (t) => {
  const x = logger.count(num => num)
  console.log('x: ', x)
  console.log('x.length: ', x.length)

  await t
    .useRole(_authenticatedUser)
    .expect(...
    etc etc
})

我的两个控制台日志的长度都是1。

fruv7luv

fruv7luv1#

请确保执行的请求都指向完全相同的URL。我建议您使用RegExp,而不是简单的string。如果您仍然只收到一个请求,请获取所有请求并手动分析它们。另外,我发现示例中有一些错误。count returns Promise<number>,这就是为什么您应该在它前面使用await。结果具有number类型,因此它没有length属性。在我的示例中,我收到了多个请求:

import { RequestLogger } from "testcafe";

const myEndpointUrl = /devexpress/;
const logger = new RequestLogger(
  [myEndpointUrl],
  {
    logResponseHeaders: true,
    logResponseBody: true,
    stringifyResponseBody: true,
    logRequestBody: true,
    stringifyRequestBody: true,
    logRequestHeaders: true,
  }
);

fixture('My fixture')
  .requestHooks(logger)
  .page('https://devexpress.github.io/testcafe/example/');
test('First test', async t => {
  const x = await logger.count(num => num)
  console.log('x: ', x)
});

相关问题