如何在 Jest 中模拟全局对象
在前端开发中,我们经常需要对全局对象进行操作和测试。Jest 是一个流行的前端测试框架,但在测试中模拟全局对象可能会有些棘手。本文将介绍一些在 Jest 中模拟全局对象的技巧。
准备工作
首先,在 Jest 中模拟全局对象的前提是建立一个测试环境。可以通过以下两种方式之一来实现:
- 在
package.json
文件中添加配置:
{ "jest": { "testEnvironment": "jsdom" } }
- 在测试文件中手动创建全局对象:
global.window = {}; global.document = {};
创建全局对象
现在,让我们来学习如何在 Jest 中创建全局对象。以下是创建 window
和 document
对象的示例代码:
-- -------------------- ---- ------- -- -- ------ -- ------------- - - --------- - ----- -- - -- -- -- -------- -- --------------- - ---
在上面的示例中,我们为 window
对象和 document
对象设置了一些基本属性。我们还可以添加其他属性和方法,以便测试代码可以正确地运行。
模拟全局函数
接下来,我们来学习如何在 Jest 中模拟全局函数。以下是一个示例,该示例模拟了全局函数 fetch()
:
// 模拟全局函数 fetch() global.fetch = jest.fn(() => Promise.resolve({ json: () => Promise.resolve({}), }) );
在上面的示例中,我们使用 jest.fn()
方法模拟了 fetch()
函数,并让它返回一个解析为一个空对象的 promise。注意,我们还必须使用 Promise.resolve()
方法在解析时返回一个 promise。
模拟全局类
最后,让我们学习如何在 Jest 中模拟全局类。以下是一个示例,该示例模拟了全局类 WebSocket
:
-- -------------------- ---- ------- -- ----- --------- ----- ------------- - ---------------- - - ------------- -- -------------- -- - ---------------- - --------------
在上面的示例中,我们声明了一个名为 MockWebSocket
的类,并将其指定为全局类 WebSocket
。我们还可以在 MockWebSocket
类中添加其他方法和属性,以便更好地测试代码。
结论
在 Jest 中模拟全局对象需要一些技巧,但实践起来并不难。在测试前确保有正确的测试环境,并创建需要的全局对象、函数和类是非常重要的。这些技术可以帮助你编写更好的测试代码,从而提高你的应用程序的可靠性和性能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67164ab8ad1e889fe21bd370