Jest 中的 Mocks 和 Spies

阅读时长 5 分钟读完

在前端开发中,测试是保证代码质量和可靠性的重要手段。Jest 是一个流行的 JavaScript 测试框架,它提供了许多工具和便捷的接口来实现自动化测试。在 Jest 中,Mocks 和 Spies 是两个非常实用的工具,可以协助我们实现更加完善和全面的测试。

什么是 Mocks?

Mocks 是一种模拟对象的技术,它可以完全替代真实的对象,并提供自定义的行为和返回值。我们可以使用 Mocks 来模拟一些外部依赖,例如后端 API 接口、浏览器 API 接口等等。这样,我们可以在测试中脱离对真实环境的依赖,保证测试的稳定性和可重复性。

使用 Jest 的 Mocks 很简单,只需要调用 jest.mock() 方法并传入要模拟的对象即可。例如,我们要测试一个依赖于浏览器 localStorage 的函数:

我们可以使用 jest.mock() 方法来模拟 localStorage:

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

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

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

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

在上述代码中,我们使用 jest.fn() 方法创建了一个 Mock 函数并赋值给 localStorageMock 对象的 setItem 属性。接着,我们调用 jest.mock() 来模拟 localStorage 对象,并将 localStorageMock 对象作为回调函数传入。最后,我们在测试函数中调用 setItem() 函数,通过 expect 断言来验证 Mock 函数是否被正确调用。

什么是 Spies?

Spies 是一种监视函数调用的技术,它可以记录函数的调用情况并提供简单的调用次数、调用参数等信息。我们可以使用 Spies 来监视一些关键函数的调用情况,例如在异步测试中监视回调函数的调用情况,或者在事件处理函数中监视某个函数是否被正确调用。

使用 Jest 的 Spies 同样很简单,只需要调用 jest.spyOn() 方法并将要监视的对象和属性或方法作为参数即可。例如,在以下代码中,我们要测试一个依赖于另一个函数的函数:

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

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

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

我们可以使用 jest.spyOn() 方法来监视 getUser() 函数:

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

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

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

在上述代码中,我们在测试函数中创建了一个 getUserSpy Spies,并使用 jest.spyOn() 方法来监视 utils 对象的 getUser 方法。我们使用 mockImplementation() 方法来定义 getUserSpy 的返回值是一个包含 id 和 name 属性的对象。接着,我们调用 getName() 函数,并通过 expect 断言验证 Spies 是否被正确调用。

总结

Mocks 和 Spies 是 Jest 提供的两个实用工具,可以协助我们实现更加完善和全面的测试。使用这些工具可以帮助我们实现代码的可重复测试,以及验证代码在不同情况下的正确性。掌握 Jest 的 Mocks 和 Spies 可以让我们写出更加健壮和可靠的代码,帮助我们快速定位和修复问题。

参考资料

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

纠错
反馈