gpt4 book ai didi

unit-testing - Jest 单元测试 : block all outgoing traffic

转载 作者:行者123 更新时间:2023-12-04 15:43:46 30 4
gpt4 key购买 nike

我想在 Jest 运行单元测试时以某种方式阻止所有传出流量。理想情况下,您模拟所有模块(或发送 http 请求的函数),包括第 3 方模块,但是当您处于开发过程中时,您可能无法从一开始就模拟所有模块,并且可能会意外发送一些数据。

如果开 Jest 无法做到这一点,那么最好的做法是什么?也许是 iptables?

最佳答案

JS代码发送请求的方式只有几种:new XMLHttpRequestfetchnew WebSocket。一旦你在文件设置中模拟它(jest 提供单个文件,肯定会在任何测试运行之前调用)你是安全的:

window.fetch = jest.fn();

稍后在你的测试中这样做

window.fetch.mockImplementation((url) =>  
url === 'https://example.org/data' &&
Promise.resolve({ message: 'wrong', data: 1 })
);
...
expect(window.fetch).toHaveBeenCalledWith('https://example.org/data');
...

当然,如果您自己完成这项工作,那将是一项相当大的工作。所以有特定的软件包可以为您做到这一点。说 fetch-mock .我现在最喜欢的是 nock它涵盖了 XHRfetch,并提供了大量实用程序来涵盖大多数可能的边缘情况,同时模拟网络响应/请求。

关于unit-testing - Jest 单元测试 : block all outgoing traffic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56760324/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com