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})=>(
{儿童}
);