使用 jest.mock 传递超出范围的变量



我有一个模拟对象,我用它来模拟react-native

const MyMock = {
    MockA: {
        methodA: jest.genMockFn()
    },
    MockB: {
        ObjectB: {
            methodA: jest.genMockFn(),
            methodB: jest.genMockFn(),
        }
    }
};

jest.mock('react-native', () => {
    return MyMock;
});

我在jest.mock之外声明对象,因为我稍后在测试中也需要它:

describe('MyClass', () => {
     beforeEach(() => {
         MyMock.MockB.ObjectB.methodA.mockClear();
         MyMock.MockB.ObjectB.methodB.mockClear();
     });
     //some other code

我收到此错误:

jest.mock()的模块工厂不允许引用任何超出范围的变量。

问题是我在jest.mock之外声明MyMock.但据我所知,我别无选择。

那么如何使代码工作,同时MyMock jest.mock之外呢?

我没有完全阅读错误消息。在最后一行(略微模糊(是这样的:

注意:这是防止未初始化的模拟变量的预防措施。如果确保需要懒惰的模拟,则允许以mock为前缀的变量名称。

因此,当我将MyMock更改为例如mockMyMock时,它起作用了。

相关内容

  • 没有找到相关文章