什么是 @pollyjs/utils
@pollyjs/utils 是一个用于录制和管理 HTTP 请求和响应的 npm 包。在前端开发中,我们经常需要进行 API 测试和调试。如果可以将已有的请求和响应保存下来,并能够在需要的时候回放它们,那么这将大大提高我们的开发效率。@pollyjs/utils 正是为此而生。
如何安装和使用
你可以通过 npm 安装 @pollyjs/utils:
npm install -S @pollyjs/utils
在你的代码中使用它:
import { setupPolly } from '@pollyjs/utils'; setupPolly();
这段代码将启动一个新的录制工程,并将所有的 HTTP 请求和响应保存到录制文件中(默认的录制文件名为 recording.har)。如果你只想对特定的 API 进行录制或回放,也可以将其作为参数传递给 setupPolly
方法。
如何回放录制数据
当你想要回放录制数据时,只需要将 setupPolly
的第一个参数设置为 ‘playback’’
:
import { setupPolly } from '@pollyjs/utils'; setupPolly('playback');
这样,你的录制数据就会被回放,并按照 recorded 模式返回响应。
如何在录制过程中进行断言
通过在 setupPolly
的选项中设置 mode
参数和组合使用 server
和 persister
,您可以将 HTTP 请求和响应保存为录制数据,并在这些数据被播放时进行各种断言。
例如,您可以使用以下代码运行一个测试脚本,该脚本将确保应用程序未将请求发送到删除用户的端点:
-- -------------------- ---- ------- ------ - ---------- - ---- ----------------- ------------ --------- - ------- -- ---------- --------------------- ----------------- - ------------------- ----- -- ----- -------------------- -- --------- ---------------- ----- --------------------- ----- ---------------- - -------- ------ ---- ------ ------- ----- ----- ---------------- --- ----- -- - ---
可供使用的 API
除了 setupPolly
之外,@pollyjs/utils 还提供了以下 API:
configure
:用于配置 Polly 的选项,例如 adapters、persister、matchRequestsBy、和 mode 等。connect
:用于将 Polly 配置项连接到你的测试框架中。
示例代码
- 将所有的 HTTP 请求和响应保存到 recording.har 文件中
import { setupPolly } from '@pollyjs/utils'; setupPolly();
- 按照录制模式回放录制数据
import { setupPolly } from '@pollyjs/utils'; setupPolly('playback');
- 在录制过程中进行断言
-- -------------------- ---- ------- ------ - ---------- - ---- ----------------- ------------ --------- - ------- -- ---------- --------------------- ----------------- - ------------------- ----- -- ----- -------------------- -- --------- ---------------- ----- --------------------- ----- ---------------- - -------- ------ ---- ------ ------- ----- ----- ---------------- --- ----- -- - ---
结论
@pollyjs/utils 是一个非常有用的 npm 包,可以帮助我们轻松地管理和回放 HTTP 请求和响应。通过了解其中的 API 和使用方式,你可以将它应用在你的前端开发项目中,帮助你更高效地进行 API 测试和调试。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/99791