使用到达路由器的应用程序。有两个页面,apage 和 bpage 渲染 APage 和 BPage
Apage 有一个标题和按钮。单击按钮时,应用程序导航到 bpage。
应用程序.js
import { Router, navigate } from "@reach/router";
export default function AppWithRouter() {
const APage = () => {
const handle = () => {
navigate('bpage')
}
return(
<div>
<h1>A Page</h1>
<button onClick={handle}>Sign In</button>
</div>
)
}
const BPage = () => (<div><h1>B Page</h1>BPage</div>)
return (
<Router>
<APage path="/apage" />
<BPage path="/bpage" />
</Router>
);
}
使用 @testing-library/react 使用标题的文本内容测试从 apage 到 bpage 的导航。
基于https://testing-library.com/docs/example-reach-router
renderwithRouter.js
export default function renderWithRouter(ui, route = "/") {
let source = createMemorySource(route);
let history = createHistory(source);
return {
...render(<LocationProvider history={history}>{ui}</LocationProvider>),
history
};
}
我的导航测试
应用程序.test.js
test('click navigates to b page', async () => {
const { getByRole } = renderWithRouter(<App />, '/apage')
fireEvent.click(getByRole("button"));
await wait(() => {
expect(getByRole('heading')).toHaveTextContent(/b page/i)
});
});
未能给予
Expected element to have text content:
/b page/i
Received:
A Page
我如何测试这个导航?