Oidc客户端jest.mock()不允许引用任何范围外的变量

时间:2019-02-14 14:39:49

标签: reactjs mocking jestjs hoisting oidc-client-js

我正在使用oidc-client为我的身份验证服务设置测试类。

当尝试模拟oidc-client的功能signinRedirect时,出现提升问题,并引发以下错误。我了解这个问题,但不知道如何解决。

The module factory of ``jest.mock()`` is not allowed to reference any out-of-scope variables. Invalid variable access: myFunc

const myFunc = jest.fn();

jest.mock('oidc-client', () => ({
    UserManager: () => ({
        signinRedirect: myFunc
    })
}));

describe('oAuth', () => {
    it('should call signin redirect when login is called', () => {
        login();

        expect(myFunc).toHaveBeenCalled();
    });
});

1 个答案:

答案 0 :(得分:0)

尝试将myFunc的名称更改为 mock MyFunc。

如果模拟变量是惰性的,则可以给它们加上模拟前缀。我从几分钟前得到的错误描述的一小部分中获取了此信息:

  

注意:这是预防未初始化的 mock 的预防措施   变量。如果确保懒惰地需要模拟,则变量   允许以mock开头的名称(不区分大小写)。