【发布时间】:2021-02-20 13:15:33
【问题描述】:
在 React 应用程序中,我有一个以编程方式转到新网址的按钮:
<ComposeButton
onClick={() => {
history.push('some-link'))
}}
>
在我的测试中,我按照 React Router 的 react-testing-library 文档中的说明渲染我的组件:
const renderComponent = (page: Pages) => {
const history = createMemoryHistory()
return renderWithState(
<MockedProvider
mocks={mocks}
addTypename={false}
defaultOptions={{
watchQuery: { fetchPolicy: 'no-cache' },
query: { fetchPolicy: 'no-cache' }
}}
>
<Router history={history}>
<ComponentToRender />
</Router>
</MockedProvider>
)
}
如何在 react-testing-library 中等待这个更改页面?
it('sends invitations', async () => {
const { getByTestId, queryByTestId, debug, getByText } = renderComponent(
Pages.contacts
)
await new Promise((resolve) => setTimeout(resolve))
const writeMessageBtn = getByTestId('write-message-btn')
waitFor(() => fireEvent.click(writeMessageBtn))
await new Promise((resolve) => setTimeout(resolve))
waitFor(() => debug()) // <- expect to see new page
getByText('EV_305_NEW_INVITATION_SEND') // <- this is in the second page, never get here
})
使用debug时,我永远看不到新页面的内容(点击按钮后)
【问题讨论】:
-
您是否在
Router内的测试中渲染您的组件,并为“some-link”定义了路由? -
我在测试中添加了
Router,但仍然测试不等待新的页面内容。
标签: reactjs jestjs react-testing-library