Reactjs 尝试呈现全局组件时集成测试失败

Reactjs 尝试呈现全局组件时集成测试失败,reactjs,jestjs,react-testing-library,Reactjs,Jestjs,React Testing Library,我写测试已经有一段时间了。今天我偶然发现了一个有趣的问题。 我已经创建了一个全局模式(对话框)组件,该组件在应用程序根目录中呈现 在整个应用程序中,我有各种各样的ClickHandler触发redux状态更新,这取决于该组件将从应用程序根目录呈现和显示的状态 失败的测试(返回null而不是预期结果)如下所示: test('open general modal', async () => { render(<ItemsOverview />); const [ge

我写测试已经有一段时间了。今天我偶然发现了一个有趣的问题。 我已经创建了一个全局模式(对话框)组件
,该组件在应用程序根目录中呈现

在整个应用程序中,我有各种各样的ClickHandler触发redux状态更新,这取决于该组件将从应用程序根目录呈现和显示的状态

失败的测试(返回null而不是预期结果)如下所示:

test('open general modal', async () => {
    render(<ItemsOverview />);
    const [getRow] = await screen.findAllByTestId('table-row');

    const testBtn = within(getRow).getByRole('button', {
      name: /edit/i
    });
    userEvent.click(tamperBtn);
  
    await waitFor(()=> {
      expect(screen.queryByRole('dialog')).toBeInTheDocument();
    }, {timeout: 10000})
 });
test('open-general-model',async()=>{
render();
const[getRow]=wait screen.findAllByTestId('table-row');
const testBtn=在(getRow.getByRole('button')内{
名称:/edit/i
});
用户事件。单击(BTN);
等待等待(()=>{
expect(screen.queryByRole('dialog')).toBeInTheDocument();
},{超时:10000})
});
当我将
插入
而不是应用程序根目录时,它会成功,否则会失败

我想知道是否有人能为我指出解决这个问题的正确方向(我做错什么了吗?)。

好的,所以我找到了问题所在。 当使用redux和context等时,需要用它包装渲染函数,并将渲染组件作为{children}传递

我忘了在这种情况下添加到包装器,所以它当然不会工作

  const AllTheProviders = ({ children }) => (
  <Provider store={store}>
    <QueryClientProvider client={queryClient}>
      <ConnectedRouter history={history}>
        {children}
      </ConnectedRouter>
    </QueryClientProvider>
  </Provider>
);
constalltheproviders=({children})=>(
{儿童}
);