跳到主要内容

Mock

  1. fnfn 是 Jest 中的一个函数,用于创建一个模拟函数。模拟函数是一个可用于替代其他函数或模块的函数,它可以记录函数的调用、返回值和抛出的异常等信息,以便在测试中进行断言和验证。

    const mockFn = jest.fn();
    mockFn('arg1', 'arg2');
    expect(mockFn).toHaveBeenCalledWith('arg1', 'arg2');

    fn 用于创建一个模拟函数,你可以在测试中使用它来跟踪函数的调用和参数,并对其进行断言。你可以为模拟函数定义返回值、抛出异常以及设置其他行为。

  2. mockmock 是 Jest 中的一个全局函数,用于模拟整个模块的导出。它接受一个模块路径和一个模拟对象或模拟函数,用于替代模块中的具体导出。模拟对象可以用来模拟模块导出的函数、类或常量等。

    jest.mock('./api', () => ({
    getData: jest.fn().mockReturnValue('mocked data')
    }));

    import api from './api';
    api.getData(); // 使用模拟的 getData 函数

    mock 用于模拟整个模块的导出。通过使用 mock,你可以将模块中的具体导出替换为模拟对象或模拟函数。这使得在测试中可以使用模拟的导出来控制模块的行为,并对其进行断言和验证。

  3. spyOnspyOn 是 Jest 提供的一个函数,用于创建一个间谍函数,可以用于跟踪和监视现有对象的方法。通过 spyOn,你可以跟踪对象上的方法调用、获取它们的返回值,并断言它们的行为。

    const obj = {
    method: () => 'original'
    };

    spyOn(obj, 'method');
    obj.method();
    expect(obj.method).toHaveBeenCalled();

    spyOn 用于创建一个间谍函数,它可以用来监视现有对象上的方法。通过 spyOn,你可以跟踪方法的调用和参数,并断言它们的行为。你可以在测试中使用间谍函数来验证方法是否被正确调用,以及检查返回值、抛出的异常等。

区别:

  • fn 是用于创建一个模拟函数,它可以用来模拟任何函数,并跟踪其调用、参数和返回值等信息。
  • mock 是用于模拟整个模块的导出,可以替代模块中的具体导出,使其返回模拟的函数或对象。
  • spyOn 是用于创建

一个间谍函数,用于跟踪和监视现有对象的方法调用。