在 Playwright 的 multipart/form-data 请求中断言 FormData

Assert FormData in multipart/form-data request in Playwright

提问人:Georgy 提问时间:10/27/2023 更新时间:10/27/2023 访问量:73

问:

我尝试使用 Playwright 测试我的 POST 请求。我等待发出请求,获取并尝试使用FormData进行断言。multipart/form-datapostData()

  const requestPromise = page.waitForRequest('**/endpoint')
  await helpers.clickButtonByName('Submit')

  const formData = new FormData()
  formData.append('test', 'something')
  expect((await requestPromise).postData()).toEqual(formData)

我收到错误,例如:

Error: expect(received).toEqual(expected) // deep equality

Expected: {Symbol(state): [{"name": "test", "value": "something"}]}
Received: "------WebKitFormBoundaryQWipcI3dAh3FVlJW·
Content-Disposition: form-data; name=\"test\"···
something·
------WebKitFormBoundaryQWipcI3dAh3FVlJW--·
"

我想测试我在请求中发送的有效负载。我该怎么做?谢谢

node.js 多部分表单数据 剧作家 表单数据

评论


答:

1赞 hardkoded 10/27/2023 #1

剧作家不解析帖子(它确实解析)。我认为最有效的方法是执行包含。像这样的东西:multipart/form-dataapplication/x-www-form-urlencoded

const postData = (await requestPromise).postData();
for (const key in yourFormDataAsAnObject) {
  if (obj.hasOwnProperty(key)) {
    expect(postData).toContain(`${key}="${obj[key]}"`);
  }
}

我敢打赌,你期待一个更好的答案,但这是我能想到的。

评论

0赞 Georgy 10/30/2023
谢谢!这是一个很好的答案!我会用这个想法