首页 > 解决方案 > 根据请求正文更改 TestCafe RequestMock API 响应

问题描述

我正在使用 TestCafe Request Mock 功能来模拟 API 响应,如下所示。

export const deleteDocMock = (status = 200) =>
  RequestMock()
    .onRequestTo({
      url: /\/api\/my-api\/.*/,
      method: 'DELETE',
    })
    .respond({some response}, status, {
      'access-control-allow-credentials': 'true',
      'access-control-allow-methods': 'GET, POST, PUT, OPTIONS',
    });

我能够根据 URL 和方法类型过滤请求,但不能基于请求正文。现在我有一个用例,如果请求正文不同,则同一 API 请求的 API 响应需要不同。例如,如果 api 的请求正文如下所示,则响应正文会发生变化

{
id: 1
name: 'foo'
}

如果请求正文如下所示,响应将再次不同

{
id: 2
name: 'bar'
}

有什么方法可以根据请求正文过滤请求,以便可以使用 TestCafe 相应地更改响应?任何帮助表示赞赏。

标签: typescripttestingautomated-testse2e-testingtestcafe

解决方案


有一个按谓词过滤的选项。 https://devexpress.github.io/testcafe/documentation/reference/test-api/requestmock/onrequestto.html#select-requests-to-be-handled-by-the-hook

此页面上的其他过滤器具有 requestMock 和 requestLogger 的示例,但谓词仅具有 requestLogger 的示例。无论如何,检查它是否有效。


推荐阅读