zoukankan      html  css  js  c++  java
  • [React Testing] Mock react-transition-group in React Component Tests with jest.mock

    There are some situations where you want to focus your tests on a particular component and not any of its children. There are other situations where you want to mock out the behavior of components that your component renders. In the case of react-transition-group, we don’t want to have to wait until the transition has completed before we can go on with our tests. Let’s see how we can mock the implementation of react-transition-group using jest.mock to make our tests more reliable and easier to write and maintain.

    Component:

    import React from 'react'
    import { CSSTransition } from 'react-transition-group'
    
    function Fade(props) {
      return (
        <CSSTransition unmountOnExit timeout={1000} classNames="fade" {...props} />
      )
    }
    
    function HiddenMessage({ children }) {
      const [show, setShow] = React.useState(false)
      const toggle = () => setShow((s) => !s)
      return (
        <div>
          <button onClick={toggle}>Toggle</button>
          <Fade in={show}>
            <div>{children}</div>
          </Fade>
        </div>
      )
    }
    
    export { HiddenMessage }

    Test:

    import React from 'react'
    import { render, fireEvent } from '@testing-library/react'
    import { HiddenMessage } from '../extra/hidden-message'
    import '@testing-library/jest-dom/extend-expect'
    
    jest.mock('react-transition-group', () => {
      return {
        CSSTransition: (props) => (props.in ? props.children : null),
      }
    })
    
    test('shows hidden message when toggle is clicked', () => {
      const myMessage = 'hello world'
      const { getByText, queryByText } = render(
        <HiddenMessage>{myMessage}</HiddenMessage>,
      )
      const toggleButton = getByText(/toggle/i)
      expect(queryByText(myMessage)).not.toBeInTheDocument()
      fireEvent.click(toggleButton)
      expect(getByText(myMessage)).toBeInTheDocument()
      fireEvent.click(toggleButton)
      expect(queryByText(myMessage)).not.toBeInTheDocument()
    })
  • 相关阅读:
    Python 获取学校图书馆OAPC账号对应的身份证号码
    利用Python获取ZOJ所有题目的名字
    android wifi Beacon帧解析
    比较skb_clone和skb_cpoy
    查找链表的中间节点
    linux wifi wpa_cli及hostapd_cli命令总结
    android wifi I2C总线
    android wifi P2P CONNECT, INVITE和JOIN流程选择
    android wifi ANR问题分析总结
    android 编译代码注意事项
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12812256.html
Copyright © 2011-2022 走看看