gpt4 book ai didi

typescript - 剧作家API测试: intercept API request

转载 作者:行者123 更新时间:2023-12-05 08:03:06 24 4
gpt4 key购买 nike

我正在用 Playwright's API testing 测试服务器.

我有一个简单的 GET 路由,它总是返回 405 not allowed。它还记录调用了 API 路由。为了这个 StackOverflow 示例,我将日志替换为 fetch 到占位符 API。

export const loader = async () => {
await fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => console.log(json));
return notAllowed();
};

在我的 API 测试中,我想拦截对占位符 API 的 fetch 请求,并只是验证它是否被调用,而不是实际调用它。

当你用 Playwright 编写一个普通的浏览器测试时,你可以使用 page.route:

page.route('*', route => {
console.log('url', route.request().url());
route.continue();
});

但是,因为这是一个 API 测试并且不在页面中运行,所以这将不起作用。

如何拦截 API 请求以对其进行断言?

我尝试创建一个新的上下文:

test('my test', async ({ playwright }) => {
const context = await playwright.request.context();
});

但是那个context对象,实际上是一个request对象,所以你不能运行request.on。我还尝试使用默认夹具中的 context 参数,但它也不起作用。

最佳答案

编写 API 测试:

Playwright Test 带有内置的请求夹具,它遵循配置选项,可以像下面这样使用来发送和断言一些请求。

const { test, expect} = require('@playwright/test');


test('should get and assert an request', async ({ request }) => {
const issues = await request.get(`https://jsonplaceholder.typicode.com/todos/1`);
expect(issues.ok()).toBeTruthy();
expect(await issues.json()).toEqual(expect.objectContaining({
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}));
});

关于typescript - 剧作家API测试: intercept API request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74473541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com