首页 > 解决方案 > oidc-client jest.mock() 不允许引用任何超出范围的变量

问题描述

我正在为使用 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();
    });
});

标签: reactjsmockingjestjshoistingoidc-client-js

解决方案


尝试更改 myFunc 的名称以模拟MyFunc。

如果你的模拟变量是惰性的,你可以在它们前面加上模拟。我从几分钟前收到的错误描述的一小部分中获取了这些信息:

注意:这是防止未初始化的模拟 变量的预防措施。如果确保延迟需要模拟,mock则允许以(不区分大小写)为前缀的变量名。


推荐阅读