在现代的前端开发中,单元测试是核心的一个环节。在保证代码质量的情况下,能够最大程度地减少开发时的 Bug;在增加代码可维护性与可读性的同时,也能更加信心地对模块的运行状态进行确信。本文将介绍 Jest 在 Node.js 项目中的单元测试实践。
Jest 是什么?
Jest 是 Facebook 开源的单元测试框架。Jest 具备简单、快速、适配性好(提供了完备的支持)等优点,同时具备强大的 Mock 能力(覆盖了几乎所有的 Mock 需求),在 React、Vue、Angular、Babel 等领域都扮演着重要的角色,自身的测试代码也已经达到了极为稳定的状态。
Jest 的安装
Node.js 项目开发中使用 Jest 进行单元测试,首先需要安装 Jest。在命令行输入:
--- ------- ---- ----------
即可安装 Jest。其实也可通过 yarn 等其他工具进行安装,这里不再赘述。
Jest 的配置
由于 Jest 可以运行在各种 JS 环境下,所以在进行 Jest 单元测试之前,我们需要对 Jest 进行一些配置。在项目根目录下创建 jest.config.js
文件,在该文件中进行 Jest 配置。
-------------- - - ---------------- ------- -- ----- ---- ------ ------------------ -- ---- ------ ---------- ----------------- -- --- -------- ------- ---------- - -------------- ---------- -- -- ---- ------- ---- -- -
除了这些配置,Jest 还有众多配置项可供选择,这里不再详细描述,请参考 Jest 文档。
Jest 的使用
下面让我们来看看 Jest 的具体使用方法。这里以一个简单的示例为例:
-------- ------ ------- -- ------- - ------ - - -- - ------ ------- ----
以上为一个两数相加的函数,我们为其编写一个测试代码,来测试一下该函数是否正常运行。
新建一个名为 sum.test.ts
的文件,文件内容如下:
------ --- ---- -------- ---------- - - - -- ----- --- -- -- - ------------- ------------ ---
其中使用 test
函数来定义一个测试用例,expect
函数断言 sum 函数的计算结果是否等于 3。
在命令行输入:
--- --- ----
即可运行 Jest 单元测试,默认会搜索 src
文件夹下以 .test.ts
结尾的文件,并运行其中的测试用例。
Jest 的 Mock
在 Node.js 项目中,Mock 可以帮助我们模拟一个虚拟对象来替代真实对象,从而帮助我们在没发现 Bug 之前就能发现它。在 Jest 中,Mock 功能已经被完全覆盖了,涵盖了大部分的 Mock 需求。
这里介绍两种 Mock 方式。
手动 Mock
手动 Mock 是最基础、也是最常见的一种 Mock 方式。手动 Mock 只需使用 jest.mock
来模拟需要 Mock 的对象即可。
如下示例代码:
------ ----- ---- -------- ------------------- -- --- ----- ----- ---- -- ------------- ------- ----- -- -- - -- --------- ----- ---- - - ----- - --- - - -- ---------- -- -------------------------- ------------------------------------ -- ------ ----- -------- - ----- ---------------------------------------------------------- ------------------------------- ---
由于我们在项目中使用了 axios
,这里将 axios
模块手动替换为 mock 版本,并模拟了请求成功的结果。
自动 Mock
Jest 也提供了自动 Mock,使用自动 Mock 可以快捷地生成自动 Mock 的结果,适用于一些较为简单的 Mock 需求。例如,在项目中需要替换掉 dotenv
模块所返回的 config
函数,则可以使用自动 Mock:
------------------- -- -- -- ------- ---------- ----
总结
本文介绍了 Jest 单元测试框架在 Node.js 项目中的应用、安装与配置、使用以及两种 Mock 方式。从 Jest 在 Node.js 项目中的实践中,我们不难发现,具备简单、快速、适配性好、Mock 能力强等优点是 Jest 成为首选单元测试框架的原因之一。同时,本文也提供了深入学习 Jest 单元测试的方向与指引,希望能够帮助读者在前端开发中,实践更加优秀的单元测试技能。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/646db06c968c7c53b0c53d1f