Nock 回复 302 和 404 抛出 HTTPError

Nock reply with 302 and 404 throws an HTTPError

我正在制作一个函数,该函数应该重试 302 错误代码和 return 数据 200,否则只会抛出错误。

  async retry(url: string): Promise<Response<string>> {
      const response = await got.get(url)
      switch(res.statusCode){
        case 200: {
          return response
        }
        case 302: {
          -> call login
          -> call retry again with retry(url)
        }
        default: {
          throw error
        }
      }
    }

问题是当我像这样设置箭尾时

const scope = nock('https://airtable.com')
  .get(`/${baseID}/api/docs`)
  .reply(302)
})

问题是它甚至不能调用重试,因为 mock returns 302 状态代码在内部为他抛出一个 HTTPError,这不是这里想要的行为,所以是否要添加告诉他不要抛出错误?

发生这种情况是因为 Got 的默认行为。 它会针对它认为是错误的某些状态代码抛出错误。

您可以通过设置 throwHttpErrors 选项 (docs) 将 Got 配置为不根据状态代码抛出错误。