我正在尝试将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请求传出计数?
如果有帮助,我制作了一个包含此问题的存储库,以人们无需配置即可尝试解决的方式进行设置:
答案 0 :(得分:4)
感谢您的详细说明。
您需要attach logger
到test
/ fixture
中。您还可以在测试运行期间使用t.addRequestHooks
和t.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");
});