首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟useRouter参数的反应钩-测试库?

如何模拟useRouter参数的反应钩-测试库?
EN

Stack Overflow用户
提问于 2022-05-05 12:22:37
回答 1查看 330关注 0票数 0

我有一个定制的钩子,它的结构是:

代码语言:javascript
复制
const urlHook = () => {
const router = useRouter();

const read = () => {
  return validate(router.query.param);
}

const write = (params) => {
  router.push(
    {
      query: {
        param: params,
      },
    },
    undefined,
    {shallow: true},
  )
}

const validate = (params) => {}
}

我想使用react-hooks-testing-library测试这个钩子,但是我不知道如何设置router.query.param来读取我想要的值,或者如何检查函数write()是否会创建正确的url?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-05 12:50:06

来模拟整个钩子- jest.requireActual

代码语言:javascript
复制
jest.mock('react-router-dom', () => ({
  ...jest.requireActual('react-router-dom'),
  useParams: () => ({
    blogId: 'company1',
    articleId: 'blog1',
  }),
  useRouteMatch: () => ({ url: '/blog/blog1/article/article1' }),
}));

要模拟历史/路由状态- MemoryRouter:

代码语言:javascript
复制
import {Route, MemoryRouter} from 'react-router-dom';

...

const renderWithRouter = ({children}) => (
  render(
    <MemoryRouter initialEntries={['blogs/1']}>
      <Route path='blogs/:blogId'>
        {children}
      </Route>
    </MemoryRouter>
  )
)

有解释的有用示例:https://v5.reactrouter.com/web/guides/testing

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72127116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档