如何在 Jest 中使用 sinon 来 mock 依赖的函数?

阅读时长 3 分钟读完

在前端开发中,我们经常需要使用 Jest 这样的测试框架来测试我们的代码是否符合预期。而在测试过程中,我们有时需要 mock 掉一些依赖的函数,来模拟一些场景,以便更好地测试我们的代码。这时候,sinon 就是一个非常好用的工具。

什么是 sinon?

sinon 是一个独立的 JavaScript 测试框架,它提供了一些 mock、spy 和 stub 等功能,可以帮助我们更方便地进行单元测试。在前端开发中,我们经常会使用它来 mock 掉一些依赖的函数。

在 Jest 中使用 sinon

在 Jest 中使用 sinon,我们需要先安装 sinon 和 sinon-chai:

安装完成后,我们就可以在测试代码中使用 sinon 了。

下面是一个例子:

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

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

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

我们的代码中,getUserInfo 函数依赖于 fetchData 函数。现在,我们要测试 getUserInfo 函数是否能够正确地获取到数据。

为了测试 getUserInfo 函数,我们需要 mock 掉 fetchData 函数,以便在测试时不会发起真正的网络请求。我们可以使用 sinon 来 mock 掉 fetchData 函数。

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

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

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

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

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

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

在这个测试中,我们使用 sinon.stub() 来创建一个 fetchData 的 stub 函数。然后,我们使用 stub.withArgs() 方法来指定当 fetchData 函数被调用时,应该返回什么值。最后,我们将这个 stub 函数传递给了 getUserInfo 函数,以便在测试时使用。

总结

使用 sinon 来 mock 掉依赖的函数,可以帮助我们更好地进行单元测试。在 Jest 中使用 sinon 也非常简单,只需要安装 sinon 和 sinon-chai,然后在测试代码中使用即可。

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

纠错
反馈