Mock
-
fn
:fn
是 Jest 中的一个函数,用于创建一个模拟函数。模拟函数是一个可用于替代其他函数或模块的函数,它可以记录函数的调用、返回值和抛出的异常等信息,以便在测试中进行断言和验证。const mockFn = jest.fn();
mockFn('arg1', 'arg2');
expect(mockFn).toHaveBeenCalledWith('arg1', 'arg2');fn
用于创建一个模拟函数,你可以在测试中使用它来跟踪函数的调用和参数,并对其进行断言。你可以为模拟函数定义返回值、抛出异常以及设 置其他行为。 -
mock
:mock
是 Jest 中的一个全局函数,用于模拟整个模块的导出。它接受一个模块路径和一个模拟对象或模拟函数,用于替代模块中的具体导出。模拟对象可以用来模拟模块导出的函数、类或常量等。jest.mock('./api', () => ({
getData: jest.fn().mockReturnValue('mocked data')
}));
import api from './api';
api.getData(); // 使用模拟的 getData 函数mock
用于模拟整个模块的导出。通过使用mock
,你可以将模块中的具体导出替换为模拟对象或模拟函数。这使得在测试中可以使用模拟的导出来控制模块的行为,并对其进行断言和验证。 -
spyOn
:spyOn
是 Jest 提供的一个函数,用于创建一个间谍函数,可以用于跟踪和监视现有对象的方法。通过spyOn
,你可以跟踪对象上的方法调用、获取它们的返回值,并断言它们的行为。const obj = {
method: () => 'original'
};
spyOn(obj, 'method');
obj.method();
expect(obj.method).toHaveBeenCalled();spyOn
用于创建一个间谍函数,它可以用来监视现有对象上的方法。通过spyOn
,你可以跟踪方法的调用和参数,并断言它们的行为。你可以在测试中使用间谍函数来验证方法是否被正确调用,以及检查返回值、抛出的异常等。
区别:
fn
是用于创建一个模拟函数,它可以用来模拟任何函数,并跟踪其调用、参数和返回值等信息。mock
是用于模拟整个模块的导出,可以替代模块中的具体导出,使其返回模拟的函数或对象。spyOn
是用于创建
一个间谍函数,用于跟踪和监视现有对象的方法调用。