【问题标题】:Oidc-client jest.mock() is not allowed to reference any out-of-scope variablesoidc-client jest.mock() 不允许引用任何超出范围的变量
【发布时间】:2026-02-21 10:15:01
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    尝试将 myFunc 的名称更改为 mockMyFunc。

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

    注意:这是为了防止未初始化的mock 变量。如果确保懒惰地需要模拟,变量 允许以mock(不区分大小写)为前缀的名称。

    【讨论】: