reactjs - Oidc-client jest.mock() 不允许引用任何超出范围的变量

标签 reactjs mocking jestjs hoisting oidc-client-js

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

当尝试模拟 oidc-client 的函数signinRedirect 时,我遇到了提升问题并抛出以下错误。我明白这个问题,但不知道如何解决。

``jest.mock()`` 的模块工厂不允许引用任何超出范围的变量。无效的变量访问: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();
    });
});

最佳答案

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

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

Note: This is a precaution to guard against uninitialized mock variables. If it is ensured that the mock is required lazily, variable names prefixed with mock (case insensitive) are permitted.

关于reactjs - Oidc-client jest.mock() 不允许引用任何超出范围的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54692952/

相关文章:

javascript - React 图片上传 Dropzone

javascript - 使用钩子(Hook)处理/删除组件

python - 如何对 __init__() 函数中调用的方法进行单元测试?

python - 当 Nose 测试发现测试时,Magic Mock 失败

typescript - 使用 typescript 的 enzyme 中 ReactWrapper 的确切类型

javascript - React Native - 不变违规 - 试图获取超出范围索引的框架

css - 使用 React 动态设置字体

python - Sphinx autodoc 使用模拟卡在 random.choice() 上

jestjs - Theme.spacing不是函数

javascript - enzyme 模拟 'click' 在应该工作时不起作用