问题已在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