在 Jest 中如何 Mock 全局变量?

阅读时长 3 分钟读完

在前端开发中,我们使用的许多库和工具都有一些全局变量,例如 $ 或者 window,这些变量不像普通变量一样容易被 mock 或重写,只能修改源代码来达到目的。在 Jest 中,有一种方法可以轻松地 mock 全局变量,让我们来看看如何做到这一点。

什么是 Jest?

Jest 是由 Facebook 开发的一个基于 Jasmine 的 JavaScript 测试框架,用于编写前端 JavaScript 单元测试和集成测试。Jest 具有简单易用、快速和高效等特点,同时还支持 Mock、Stub、Spy 等测试辅助工具,为开发者提供了良好的测试支持。

在 Jest 中,我们可以使用 jest.spyOn 方法来 mock 全局变量,以下是具体的实现方法:

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

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

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

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

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

在示例代码中,首先定义了一个全局变量 GLOBAL_VARIABLE,然后使用 jest.spyOn 方法来 mock 这个变量。通过 jest.spyOn(global, 'GLOBAL_VARIABLE') 来指定 spyOn 的对象和属性名,然后使用 mockImplementation 来指定对全局变量进行 mock 的实现方法。

在测试完成后,我们需要通过 global.GLOBAL_VARIABLE = GLOBAL_BACKUP 来恢复全局变量的原始值,这样才可以保证下一次测试的正确性。

最后使用 expect(global.GLOBAL_VARIABLE).toEqual('mocked') 验证 mock 是否生效。

总结

本文介绍了在 Jest 中如何 mock 全局变量,主要使用 jest.spyOn 方法来模拟全局变量的属性值,以达到测试的目的。注意,通过修改全局变量可能会影响其他测试用例,所以在使用时需要小心谨慎。

希望本文的内容可以对您进行 Jest 的测试有所帮助。

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

纠错
反馈