首页 > 解决方案 > 对同一端点的多个响应的 Puppeteer 请求拦截最佳实践

问题描述

对于我的单元测试,我拦截所有请求,然后以特定端点的模拟日期响应。我有一个pageMockedRequests可以打开端点的功能。

当我想根据被调用的次数更改我发回的响应时,我的问题就出现了。

    const pageMockedRequests = (request) => {
      switch (request.url()) {
        case ENDPOINTS.A:
          return request.respond(jsonResponseWrapper(returnValidToken(), 200));
        case ENDPOINTS.B:
          if (count === 0) {
            return request.respond(jsonResponseWrapper({RESPONSE FOR 1st CALL}, 200));
          } else if (count === 1) {
            return request.respond(jsonResponseWrapper({RESPONSE FOR 2nd CALL}, 200));
          }
        default:
          return request.abort();
      }
    };

以上表明ENDPOINT.B第二次将不同于第一次响应。我目前正在更改它count

还有其他人这样做不同吗?

标签: javascriptjestjscoded-ui-testspuppeteer

解决方案


您可以为 Puppeteer 使用Mockiavelli请求模拟库。它的一次性模拟功能(https://github.com/hltech/mockiavelli#one-time-mocks)允许为第一次和第二次调用定义不同的响应。


推荐阅读