如何在react-testing-library中测试React Router路由参数?

时间:2019-04-12 03:39:13

标签: javascript reactjs testing react-router react-testing-library

我正在使用redux并反应路由器。

我想测试路由参数是否显示在页面上。

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,
});

路由参数只是未在测试中显示。超时会出错。

但是它可以在页面上运行,因为如果我启动该应用并手动对其进行测试,那么一切都会按预期运行。

1 个答案:

答案 0 :(得分:0)

想通了。

我没有意识到您也需要通过这条路线。

open()

如果您不使用redux或不想编写自定义渲染,则可以在https://react-testing-examples.com/jest-rtl/react-router/

处进行简单的操作