在前端开发中,我们时常需要对接各种 API,而测试 API 的过程中需要对网络请求进行模拟。@spotify/polly-jest-presets 就是一个帮助我们在 Jest 中模拟网络请求的 npm 包。本文将会介绍如何使用该 npm 包进行网络请求模拟,包括基础 API 的使用和高级功能的配置。
安装
在开始使用该 npm 包前,需要先进行安装。
npm install --save-dev @spotify/polly-jest-presets
或者,如果你使用的是 yarn:
yarn add --dev @spotify/polly-jest-presets
基础 API
集成
与其他 Jest 插件一样,我们需要在 Jest 配置文件中设置该 npm 包的配置。
// jest.config.js module.exports = { // ... preset: '@spotify/polly-jest-presets', // ... }
在配置文件中设置该 npm 包的 preset 后,Jest 将会自动为我们创建一个 Polly 实例供使用。
使用
在测试用例中,我们可以使用 polly
对象来创建一个记录网络请求的实例,以及使用 polly.pause()
和 polly.stop()
方法来控制录制流程。
-- -------------------- ---- ------- ---------- ------ -------- ----------- ----- -- -- - ----- ------------- - - ---------------- ------ -- ------------ -- ----- ----- - -------------- -- -------- ---------------------------- --------------- --- - ----- -------- - ----- ---------------------------------- ------------------------------- ------ ------- --- - ------- - -- --------- ----- ------------- - ---
在上述测试用例中,我们使用 polly.record()
方法对网络请求进行截录,polly.pause()
方法暂停了录制流程,以便进行回放模式。
其他 API
polly.flush
: 将所记录的请求发送到服务器,并将其存储为应该存储到磁盘上的实际响应。 如果要生成错误,则在服务器发送响应之前断言当前模式。polly.configure({ ... })
: 配置记录器的其他选项。polly.flushAdapter.flushCache()
: 清除记录器的内部缓存。
配置
多路由规则
Polly 的路由规则支持多个配置,即我们可以为每个测试用例独立定义各自的路由规则。
-- -------------------- ---- ------- ---------- ----- -------- ----- ---------------- ----- -- -- - ----- ----- - -------------- -- --------------- ----- --------- - - ------ ------- -- ----- --------- - - ---- ----- -- ----- --------- - - ------ -------- ------ -- ----- ------ - ----------------- --------------------- ----- ---------------- - ----- ------ -------- ------ -- --- ----- ------ - ----------------- ---------------- - -------- ------ -- --- ----- ------ - ----------------- --------------------- ----- ---------------- - ----- ----- -- --- -- --------- ---------------------------------- -- -- - ------ - ------- ---- ----- ---------- -- --- ---------------------------------- -- -- - ------ - ------- ---- ----- ---------- -- --- ---------------------------------- -- -- - ------ - ------- ---- ----- ---------- -- --- -- ------------- ----- --------- - ----- ---------------------------------- ------------------------------------------ ----- --------- - ----- ---------------------------------- ------------------------------------------ ----- --------- - ----- ---------------------------------- ------------------------------------------ ---
在上述测试用例中,我们定义了 3 个不同的路由规则:polly1
、polly2
和 polly3
。对于这 3 个路由规则,在同样的 URL 地址上,响应内容将会不同。
动态响应
除了使用预定义的响应之外,我们还可以在模拟中处理不同的响应。
-- -------------------- ---- ------- ---------- ----- ------- ----------- ----- -- -- - ----- --------- - - ------ ------- -- ----- --------- - - ---- ----- -- ----- --------- - - ------ -------- ------ -- ----- ----- - -------------- --------------------------------- ----- ---- -- - --- ------------- -- -------------- --- ---- - ------------ - ---------- - ---- -- -------------- --- ---- - ------------ - ---------- - ---- - ------------ - ---------- - ----------------------------------- --- ----- --------- - ----- ---------------------------------------- ------------------------------------------ ----- --------- - ----- ---------------------------------------- ------------------------------------------ ----- --------- - ----- ---------------------------------- ------------------------------------------ ---
如上述测试用例所示,我们可以在回调函数中处理请求,并根据请求的不同部分返回不同的响应。
总结
在本文中,我们学习了如何使用 @spotify/polly-jest-presets npm 包来模拟网络请求。我们了解该 npm 包的基本使用方法和一些高级选项,如多路由规则和动态响应。当您在编写 Jest 测试用例时需要模拟网络请求时,该 npm 包将能够为您提供很大的帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/99825