我有一些组件正在渲染另一个已经独立测试的组件(FetchNextPageButton),例如:

const News = () => (
  <div>
    <h1>News</h1>
    ...
    <FetchNextPageButton query={NEWS_QUERY} path="viewer.news" />
  </div>
)

const Jobs = () => (
  <div>
    <h1>Jobs</h1>
    ...
    <FetchNextPageButton query={JOBS_QUERY} path="viewer.jobs" />
  </div>
)

const Posts = () => (
  <div>
    <h1>Posts</h1>
    ...
    <FetchNextPageButton query={POSTS_QUERY} path="viewer.posts" />
  </div>
)

事实是,我不想为每个组件上已经在其他地方进行过测试的功能添加测试,因此我认为仅测试组件是否已渲染以及我是否通过了测试就足够了。正确的 Prop 。

我本来可以使用Enzyme进行如下测试:
expect(wrapper.find('FetchNextPageButton').props()).toMatchObject({
  query: NEWS_QUERY,
  path: "viewer.news"
})

所以我想知道通过使用React testing library来测试它的最佳方法是什么。

最佳答案

这是Kent C. Dodds(RTL的创建者)与他讨论后推荐的方法:

import FetchNextPageButton from 'FetchNextPageButton'

jest.mock('FetchNextPageButton', () => {
  return jest.fn(() => null)
})

// ... in your test
expect(FetchNextPageButton).toHaveBeenCalledWith(props, context)

10-06 14:16