无法使用 Testcafe 拦截来自页面的传出 AJAX 请求

Cannot intercept outgoing AJAX request from page using Testcafe

我正在尝试将 TestCafe 用于客户端 javascript 库,但我无法通过计数机制捕获任何传出的 AJAX 测试页面加载请求。

我的尝试涉及使用此库中的 RequestLogger 对象,包括使用正则表达式 /\.org/ 设置第一个参数,以捕获任何使用 .org 后缀的传出磁贴请求。我相信这是有道理的,因为所有传出请求都会发送到 openstreetmap.org,目的是获取 png 地图图块。

我的测试核心如下所示:

import { RequestLogger } from "testcafe";

fixture`Hello World - Leaflet`.page`http://localhost:8080`;

const logger = RequestLogger(/org/, {
  logRequestHeaders: true,
  logResponseHeaders: true
});

test("Test if there's an outgoing network request...", async t => {
  // Do something...
  await t
    .wait(5000)
    .expect(logger.count(() => true))
    .gt(0, "Must detect more than zero outgoing requests to openstreetmap");
});

为了捕获 AJAX 请求的正确传出计数,我是否遗漏了什么?

如果有帮助,我已经制作了一个包含此问题的回购协议,其设置方式使人们无需配置即可尝试解决:

感谢您的详细描述。

您需要 attach logger 到您的 test/fixture。您还可以在测试 运行 期间使用 t.addRequestHookst.removeRequestHooks 方法附加和分离挂钩。

在测试代码中,我将 logger 挂钩附加到 test:

import { RequestLogger } from "testcafe";

fixture`Hello World - Leaflet`.page`http://localhost:8080`;

const logger = RequestLogger(/org/);

test
    .requestHooks(logger)
    ("Test if there's an outgoing network request...", async t => {
        await t
            .wait(5000)
            .expect(logger.count(() => true))
            .gt(0, "Must detect more than zero outgoing requests to openstreetmap");
    });