javascript - 我将如何在 react-testing-library 中测试反应路由器路由参数?
问题描述
我正在使用 redux 和 react 路由器。
我想测试一个路由参数是否显示在页面上。
test('route param is displayed', async () => {
const { queryByText } = customRender(
<EditCard />,
{
route: '/card/1554990887217',
}
);
const cardId = queryByText(/1554990887217/);
await waitForElement(() => cardId);
})
我的自定义渲染像这样包装路由器和 redux:
export const customRender = (
ui,
{
route = '/',
history = createMemoryHistory({ initialEntries: [route] }),
initialState,
store = createStore(rootReducer, initialState),
...options
} = {}
) => ({
...rtl(
<Provider store={store}>
<Router history={history}>{ui}</Router>
</Provider>,
options
),
history,
});
路由参数只是没有出现在测试中。它只是超时错误。
但是它可以在页面上运行,如果我启动应用程序并手动测试它,一切都会按预期工作。
解决方案
弄清楚了。
我没有意识到您也需要传递路线。
const { queryByText } = render(
<Route path="/card/:cardId">
<EditCard />
</Route>,
{
route: '/card/1554990887217',
}
);
如果您不使用 redux 或不想编写自定义渲染,这里有一种更简单的方法来执行此操作https://react-testing-examples.com/jest-rtl/react-router/
推荐阅读
- c# - .net 上的 Ghostscript 安装问题
- reactjs - React Hooks:如何在渲染之前等待数据被获取
- python - 错误:尝试使用 BeautifulSoup 抓取数据时无
- javascript - 如何在 HTML 中显示我的 JS 游戏的分数?
- unity3d - UnityWebRequest 为正确的 url 返回不同的错误
- java - 如何为“keep_screen_ON”的开启和关闭创建设置
- django - 在位于 settings.py 的视图中调用函数
- c# - 使用具有通用查询性能的 AsCacheQueryable 从 Ignite 获取数据
- pandas - Pandas 用预定义的值替换单元格值
- javascript - angular8-surveyjs-如何删除默认完成按钮