什么是 Jest?
Jest 是 Facebook 开发的一款 JavaScript 测试框架,它可以用于测试 React、Vue、Angular 等前端框架的应用程序。Jest 可以让开发者更加方便地编写测试用例,同时还提供了一些强大的测试工具。
什么是 spyOn?
Jest 中的 spyOn 函数可以用来监视一个函数的调用情况,可以用来测试一个函数是否被调用、被调用的次数、以及被调用时传入的参数等信息。
spyOn 函数的语法如下:
jest.spyOn(object, methodName)
其中,object 是要监视的对象,methodName 是要监视的方法名。
使用 spyOn 进行测试
下面我们来看一个例子,假设我们有一个名为 math.js
的模块,其中包含了一个加法函数 add
:
function add(x, y) { return x + y; } module.exports = { add, };
我们可以使用 spyOn 函数来监视 add
函数的调用情况,并测试它是否被正确调用。示例代码如下:
const math = require('./math'); test('test add function', () => { const spy = jest.spyOn(math, 'add'); const result = math.add(1, 2); expect(spy).toHaveBeenCalled(); expect(spy).toHaveBeenCalledWith(1, 2); expect(result).toBe(3); spy.mockRestore(); });
在这段代码中,我们首先使用 spyOn 函数来监视 math.add
函数。然后我们调用 math.add
函数,并使用 expect 函数来测试 spy
对象是否被正确调用、是否被正确调用了参数、以及 math.add
函数的返回值是否正确。最后,我们调用 spy.mockRestore()
函数来恢复 math.add
函数的原始实现。
spyOn 的其他用法
除了监视函数的调用情况,spyOn 函数还可以用来模拟一个函数的返回值。示例代码如下:
const math = require('./math'); test('test add function', () => { const spy = jest.spyOn(math, 'add').mockReturnValue(3); const result = math.add(1, 2); expect(spy).toHaveBeenCalled(); expect(spy).toHaveBeenCalledWith(1, 2); expect(result).toBe(3); spy.mockRestore(); });
在这段代码中,我们首先使用 spyOn 函数来监视 math.add
函数,并使用 mockReturnValue
函数来模拟它的返回值为 3。然后我们调用 math.add
函数,并使用 expect 函数来测试 spy
对象是否被正确调用、是否被正确调用了参数、以及 math.add
函数的返回值是否为 3。最后,我们调用 spy.mockRestore()
函数来恢复 math.add
函数的原始实现。
除了 mockReturnValue
函数,spyOn 函数还提供了其他一些模拟函数的方法,例如 mockImplementation
函数、mockResolvedValue
函数、mockRejectedValue
函数等。
总结
Jest 的 spyOn 函数可以用来监视一个函数的调用情况,并进行一些测试。除了监视函数的调用情况外,spyOn 函数还可以用来模拟函数的返回值等。在编写测试用例时,我们可以使用 spyOn 函数来更加方便地编写测试用例,提高我们的开发效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65c3f313add4f0e0ffe5e792