前言
前端开发对于测试很容易就会产生畏惧感,但是测试却是提升代码可靠性的重要手段之一。在测试中,Mock 也是非常常用的技术。本文旨在介绍在 Jest 测试中使用 Sinon.js 进行 Mock 的详细过程。
Sinon.js 简介
Sinon.js 是 JavaScript 中一个优秀的测试解决方案,它可以Mock各种函数、对象和请求等。Sinon.js 可以做到如下的 Mock 功能:
- Spy:可以对函数进行调用计数、返回固定值、更改函数实现等。
- Stub:与 Spy 类似,但是可以直接替换掉函数本身。
- Mock:可以对一组对象做到统一的 Mock,使得测试更加简单。
Jest 简介
Jest 是Facebook 推出的一款测试框架,它是目前前端社区中最为流行的一种测试框架。Jest 具有以下几个特点:
- 自动测试运行
- 内置 assertions
- 快速高效的测试
使用 Sinon.js 进行 Mock
在 Jest 中使用 Sinon.js 进行 Mock 需要通过 npm 安装相应的依赖包。
npm install sinon --save-dev
安装完成后,在测试文件的头部引入文件。
const sinon = require('sinon');
Spy
Spy 可以监控函数被使用的情况,比如在一个函数被调用的时候,Sinon 可以记录它的调用情况。
-- -------------------- ---- ------- -- --------- ----- ---- - ----------------- - --------- - ----- - --------- - ------ ---------- - - -- --------- ----- ----- - ----------------- ----- ---- - --------------------- ---------- ---- ------- -- ----- -- -- - ----- ---- - --- ------------- ----- ---------- - --------------- ----------- --------------------------------------- -------------------------------------------- ---
Stub
Stub 可以截取并替换函数的实现,使得在测试过程中,函数返回我们所期望的数据。
-- -------------------- ---- ------- -- --------- ----- ---- - ----------------- - --------- - ----- - ---------------- - ------ -------------------------------- -- ------------ - - -- --------- ----- ----- - ----------------- ----- ---- - --------------------- ---------- ---- -------------- -- ------ ----- -- -- - ----- ---- - --- ------------- ----- ---- - ------------------ ---------------------------------- ----- -- -- ----------------- ----- ------ -- ---- ----- ---- - ----- ---------------------- ----------------------------- -------------- ---
Mock
Mock 可以对对象的一组方法进行替换,并在测试过程中,使调用时返回我们所期望的数据。
-- -------------------- ---- ------- -- --------- ----- ----------- - ----- ------------ - ----- ---- - ----- --------------- ----- ------- - ----- ------------------------------------ ------ - ----- ------- -- - ----- --------- - ------ --------------------------- -- ------------ - ----- ------------------------- - ------ ------------------------------------------- -- ------------ - - -- --------- ----- ----- - ----------------- ----- ----------- - --------------------- ---------- ----------- ---------- -- ------ ----- -- -- - ----- ----------- - --- -------------- ----- ----------- - ---------------------------------------------------- ----- ------ --- ----- ----------- - - ---------- ---- -------- - ---- -- - -- ----- ------------------ - --------------------------------------------------------------------------------------------------------------- ----- ------- - ----- ------------------------- ------------------------- ----- - ----- ------ -- -------- - ---- -- - --- --------------------- ---------------------------- ---
总结
在 Jest 中使用 Sinon.js 进行 Mock 可以使得我们的测试变得更加具有可靠性,同时它也可以帮助我们更加清晰地了解代码执行的情况。在项目中经常需要用到 Mock 技术,而使用 Sinon.js 可以使得代码更加清晰易懂,也减少了我们的维护成本。
参考文献
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/665552e1d3423812e49ded40