reactjs jest.mock()不能在测试内部工作,只能在测试外部工作

34gzjxbg  于 2022-12-18  发布在  React
关注(0)|答案(2)|浏览(188)

我有一个简单的测试套件,在某些情况下我想模拟一个模块,在某些情况下不想。然而,jest.mock()只有在测试之外才能工作。有人知道为什么会这样吗?我做错了什么?
这是我想要模拟的函数的实际导入

import {hasSupport, getCallingCode} from 'utils/countryCallingCode';

这是这个函数的模拟:

jest.mock('utils/countryCallingCode', () => ({
    getCallingCode: () => '1',
    hasSupport: () => true,
  }));

现在,工作场景是:

//imports
//mock

describe('...', () -> {
    it('...', () -> {

    });
});


这不起作用:

//imports

describe('...', () -> {
    //mock

    it('...', () -> {

    });
});

这也不起作用:

//imports

describe('...', () -> {
    it('...', () -> {
        //mock
    });
});
3pmvbmvn

3pmvbmvn1#

Jest自动将ES模块中的jest.mock调用提升到文件的顶部,在任何import语句之前,这样做是为了允许树中的其他模块使用模拟的模块。
Jest文档还提供了一个示例存储库来解释how Jest mocking works
如果您想阻止这种自动行为,可以使用jest.dontMock。

相关问题