在 Jest 测试中使用 Sinon.js 进行 Mock

阅读时长 6 分钟读完

前言

前端开发对于测试很容易就会产生畏惧感,但是测试却是提升代码可靠性的重要手段之一。在测试中,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 安装相应的依赖包。

安装完成后,在测试文件的头部引入文件。

Spy

Spy 可以监控函数被使用的情况,比如在一个函数被调用的时候,Sinon 可以记录它的调用情况。

-- -------------------- ---- -------
-- ---------
----- ---- -
  ----------------- -
    --------- - -----
  -
  
  --------- -
    ------ ----------
  -
-

-- ---------
----- ----- - -----------------
----- ---- - ---------------------

---------- ---- ------- -- ----- -- -- -
  ----- ---- - --- -------------
  ----- ---------- - --------------- -----------

  ---------------------------------------
  --------------------------------------------
---

Stub

Stub 可以截取并替换函数的实现,使得在测试过程中,函数返回我们所期望的数据。

-- -------------------- ---- -------
-- ---------
----- ---- -
  ----------------- -
    --------- - -----
  -
  
  ---------------- -
    ------ -------------------------------- -- ------------
  -
-

-- ---------
----- ----- - -----------------
----- ---- - ---------------------

---------- ---- -------------- -- ------ ----- -- -- -
  ----- ---- - --- -------------
  ----- ---- - ------------------ ----------------------------------
    ----- -- -- -----------------
      ----- ------
    --
  ----

  ----- ---- - ----- ----------------------
  -----------------------------

  --------------
---

Mock

Mock 可以对对象的一组方法进行替换,并在测试过程中,使调用时返回我们所期望的数据。

-- -------------------- ---- -------
-- ---------
----- ----------- -
  ----- ------------ -
    ----- ---- - ----- ---------------
    ----- ------- - ----- ------------------------------------
    ------ -
      -----
      -------
    --
  -
  
  ----- --------- -
    ------ --------------------------- -- ------------
  -
  
  ----- ------------------------- -
    ------ ------------------------------------------- -- ------------
  -
-

-- ---------
----- ----- - -----------------
----- ----------- - ---------------------

---------- ----------- ---------- -- ------ ----- -- -- -
  ----- ----------- - --- --------------
  ----- ----------- - ----------------------------------------------------
    ----- ------
  ---

  ----- ----------- - -
    ---------- ----
    -------- -
      ---- --
    -
  --
  ----- ------------------ - ---------------------------------------------------------------------------------------------------------------

  ----- ------- - ----- -------------------------
  -------------------------
    ----- -
      ----- ------
    --
    -------- -
      ---- --
    -
  ---

  ---------------------
  ----------------------------
---

总结

在 Jest 中使用 Sinon.js 进行 Mock 可以使得我们的测试变得更加具有可靠性,同时它也可以帮助我们更加清晰地了解代码执行的情况。在项目中经常需要用到 Mock 技术,而使用 Sinon.js 可以使得代码更加清晰易懂,也减少了我们的维护成本。

参考文献

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/665552e1d3423812e49ded40

纠错
反馈