在Jest中模拟全局对象方法
测试是开发过程中的重要部分。这也是容易忽视错误的地方,这些错误可能会积累起来,导致难以调试的问题。一个常见的问题是编写不好的模拟,特别是涉及全局对象及其方法的情况。让我们看看如何在Jest中模拟全局对象方法。
在Jest中模拟全局对象方法的最佳方式是使用jest.spyOn()
方法。它接受要模拟的对象和方法的名称,并返回一个模拟函数。然后,可以将生成的模拟函数链接到模拟实现或模拟返回值。例如:
jest.spyOn(Math, 'random').mockReturnValue(0.123456789);
jest.spyOn(Date, 'now').mockReturnValue('123456789');
在这个例子中,我们模拟了两个全局对象方法并返回一个固定值。你也可以使用mockFn.mockImplementation()
来模拟它们的实现。使用这两个选项之一,可以从模拟方法中获得可预测的值。当使用Math.random()
或Date.now()
时,这特别方便。