小编Dav*_*iel的帖子

使用 React 测试库和 renderHook 测试具有多个上下文的钩子时出错

解决了

问题已在github上跟踪

试图使用反应测试库来测试自定义挂钩,并且我试图测试的挂钩需要多个上下文提供程序才能正常工作。(认证和通知)

这里的文档仅概述了使用单个提供程序创建包装器,如下所示:

const wrapper = ({ children }) => <ContextProvider>{children}</ContextProvider>
Run Code Online (Sandbox Code Playgroud)

但是,我的实现需要更复杂的东西,如下所示:

const wrapper = ({ children }) => (
    <ToastProvider>
        <NotificationProvider>
            <AuthProvider>{children}</AuthProvider>
        </NotificationProvider>
    </ToastProvider>
);
Run Code Online (Sandbox Code Playgroud)

每次尝试都失败并出现以下错误:

TypeError: parentInstance.children.indexOf is not a function
Run Code Online (Sandbox Code Playgroud)

或者

Invariant Violation: Drop(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.
Run Code Online (Sandbox Code Playgroud)

让我相信,如果不放弃 renderHook 并构建一个可以手动触发必要行为的测试组件,就没有明确的方法来提供正确的上下文。

经过更多挖掘后,我发现这个错误隐藏在日志中:

Warning: An invalid container has been provided. This may indicate that another renderer is being …
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs react-context react-testing-library react-hooks

7
推荐指数
0
解决办法
3483
查看次数