javascript - 使用 react-testing-library 时如何测试组件是否使用正确的 props 渲染?

标签 javascript reactjs jestjs react-testing-library

我有一些组件正在渲染另一个已经单独测试过的组件 (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)

关于javascript - 使用 react-testing-library 时如何测试组件是否使用正确的 props 渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58623666/

相关文章:

javascript - React 容器未正确绑定(bind)

javascript - Jest 测试为 eventemitter 对象发出事件 (http)

javascript - Jest 单元测试 - 测试 setState()

express - 如何用 Jest 测试 Passport LocalStrategy

javascript - 绘制动画线条

javascript - 如何根据facebook评论动态调整div高度

javascript - 将字符串数组中字符串的每个首字母大写

c# - 验证域名

javascript - 如何测试 Controller 中将值传递给服务 setter 的 setter 函数

unit-testing - 如何在 react 组件的子组件中模拟 e.preventDefault