const response = await fetch(url, { signal: AbortSignal.timeout(5000) });
我想使用 Jest 对上面的 javascript 行进行单元测试。特别是超时行为。但这真的可能吗?
无论我做什么,我都必须模拟 fetch 函数。我可以让它拒绝或超时或其他什么,但我实际上只是测试模拟的功能。
我感觉这就是 JS 交给 Web API 的地方。因此我无法对其进行单元测试?
fetch 和 AbortSignal 是浏览器 API,它们的实现不受 Jest 或 Node 环境控制。在这种情况下,超时行为已融入 Web API 的工作方式中,因此您只能通过模拟来模拟它。单元测试本质上侧重于您的代码,而不是第三方 API 或环境的行为。