我可以使用 Jest 测试获取超时吗?

问题描述 投票:0回答:1
  • 节点:20.15.1
  • 开玩笑:29.7.0
  • jest-环境-jsdom:29.7.0
const response = await fetch(url, { signal: AbortSignal.timeout(5000) });

我想使用 Jest 对上面的 javascript 行进行单元测试。特别是超时行为。但这真的可能吗?

无论我做什么,我都必须模拟 fetch 函数。我可以让它拒绝或超时或其他什么,但我实际上只是测试模拟的功能。

我感觉这就是 JS 交给 Web API 的地方。因此我无法对其进行单元测试?

javascript node.js typescript jestjs
1个回答
0
投票

fetch 和 AbortSignal 是浏览器 API,它们的实现不受 Jest 或 Node 环境控制。在这种情况下,超时行为已融入 Web API 的工作方式中,因此您只能通过模拟来模拟它。单元测试本质上侧重于您的代码,而不是第三方 API 或环境的行为。

© www.soinside.com 2019 - 2024. All rights reserved.