我有一个模拟对象,我用它来模拟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
时,它起作用了。