여러 하위 구성 요소로 React 구성 요소를 테스트하는 방법은 무엇입니까?

Jpark9061

내가 관심 영역 내 모든 코드를 잘라 있지만, 본질적으로 (그 같은 코드 외모는 아무것도하지하려고하면 용서 그래서) 나는 몇 통과 할 때 <Navbar.Tab comopnent={null}/><Navbar></Navbar>그것이 농담과 효소의 React.Children를 사용하여 단위 테스트를 시도 .count는> 1 개의 하위 항목이 있음을 .type()알 수 있지만 이해할 수 없으며이 오류가 표시됩니다. 구성 요소가 잘 렌더링되지만 테스트 방법을 모르겠습니다.

 Navbar component › Rendered navbar with many non tabs

    TypeError: child.type is not a function

      48 |   if (React.Children.count(children) > 1) {
      49 |     value = children.map(child => {
    > 50 |       isTab = child.type().toLowerCase() !== 'tabs' ? false : isTab;
         |                     ^
      51 |       return child.props;
      52 |     });
      53 |   }

navbar

const Navbar = ({ children, filter }) => {
  let isTab = true;
  let value = null;
  if (React.Children.count(children) > 1) {
    value = children.map(child => {
      isTab = child.type().toLowerCase() !== 'tabs' ? false : isTab;
      return child.props;
    });
  }
  return (
    <>
      {value.map(child => child.component)}
    </>
  )
}

const Tabs = () => {
  return 'tabs';
};
Navbar.Tab = Tabs;
export default Navbar;

navbar.test.js

 test('Rendered navbar with filter', () => {
    const wrapper = mount(
      <Navbar filter>
        <Navbar.Tab label="In Flight Orders" component={null} />,
        <Navbar.Tab label="Active Service" component={null} />,
        <Navbar.Tab label="Active Service 1" component={null} />
      </Navbar>
    );
    expect(wrapper).toMatchSnapshot();
  });
Flask 일 것입니다

child.type().toLowerCase() !== 'tabs'이 검사를 수행하는 나쁜 방법입니다. 모든 자식 요소가 React 구성 요소는 아니며 모든 클래스 또는 기능적 React 구성 요소가 함수처럼 호출 될 수있는 것은 아닙니다. 그건 안전하지 않은 해킹 을 제외한 거의 모든 아이를 위해 오류가 발생합니다 Tab. 대신 type비교해야합니다 Tab.

이 경우 구성 요소도 실패합니다 value === null.

더 안전하고 간단하게 작성하는 방법은 다음과 같습니다.

const Navbar = ({ children, filter }) => {
  const tabs = React.Children.toArray(children)
  .filter(child => child.type === Navbar.Tab)
  .map(child => child.props.component)
  .filter(Boolean);

  return (
    <>
      {tabs}
    </>
  )
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

낙타 단위 테스트에서 여러 구성 요소를 모의하는 방법은 무엇입니까?

분류에서Dev

react-testing-library로 다른 구성 요소로 구성된 구성 요소를 테스트하는 방법은 무엇입니까?

분류에서Dev

Jest를 사용하여 localStorage로 반응 구성 요소를 테스트하는 방법은 무엇입니까?

분류에서Dev

Jest를 사용하여 localStorage로 반응 구성 요소를 테스트하는 방법은 무엇입니까?

분류에서Dev

React Native의 여러 구성 요소에서 액세스 할 수있는 단일 모달 구성 요소를 설계하는 방법은 무엇입니까?

분류에서Dev

스타일 구성 요소를 사용하여 구성된 구성 요소를 테마로 지정하는 데 선호되는 방법은 무엇입니까?

분류에서Dev

React에서 여러 구성 요소를 통해 데이터를 전달하는 방법은 무엇입니까?

분류에서Dev

여러 React js 구성 요소를 제어하는 방법은 무엇입니까?

분류에서Dev

useReducer 후크를 사용하여 구성 요소를 테스트하는 방법은 무엇입니까?

분류에서Dev

React에서 자식 구성 요소의 상태를 사용하여 부모 구성 요소를 업데이트하는 방법은 무엇입니까?

분류에서Dev

React Router를 사용하여 React의 자식 구성 요소가 아닌 App 구성 요소에만 링크를 표시하는 방법은 무엇입니까?

분류에서Dev

React의 자식 구성 요소에서 onchange 이벤트로 부모 클래스 구성 요소의 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

DOM을 직접 사용하는 객체로 React Hooks를 사용하여 구성 요소를 구성하는 방법은 무엇입니까? (예 : OpenLayers)?)

분류에서Dev

react 및 typescript를 사용하여 부모 구성 요소 내에서 자식 구성 요소를 렌더링하는 방법은 무엇입니까?

분류에서Dev

React Testing Library를 사용하여 메모 화 된 구성 요소의 콜백을 테스트하는 방법은 무엇입니까?

분류에서Dev

React에서 맵을 사용하여 렌더링 된 구성 요소 목록의 특정 구성 요소를 수정하는 방법은 무엇입니까?

분류에서Dev

React Bootstrap 선택 구성 요소에 핸들러를 연결하는 방법은 무엇입니까?

분류에서Dev

React가 하위 구성 요소를 마운트 해제하는 방법은 무엇입니까?

분류에서Dev

소품으로 다른 구성 요소를 렌더링하는 반응 구성 요소를 테스트하는 방법은 무엇입니까?

분류에서Dev

기능 구성 요소를 클래스 구성 요소로 변환하는 방법은 무엇입니까?

분류에서Dev

JSX / React에서 삼항 연산자로 여러 구성 요소를 렌더링하는 방법은 무엇입니까?

분류에서Dev

React 클래스 기반 구성 요소를 기능 구성 요소로 변환하는 방법은 무엇입니까?

분류에서Dev

div (React.JS) 내에서 구성 요소를 수직으로 스택하는 방법은 무엇입니까?

분류에서Dev

반응 연결 구성 요소를 테스트하는 방법과 구성 요소를 테스트하는 방법은 무엇입니까?

분류에서Dev

기능 구성 요소에 여러 ReactJS 상태를 작성하는 방법은 무엇입니까?

분류에서Dev

반응 테스트 라이브러리를 사용하여 부모 구성 요소에서 자식 구성 요소의 렌더링을 단위 테스트하는 방법은 무엇입니까?

분류에서Dev

자식 구성 요소를 구성 요소로 전송하는 방법은 무엇입니까?

분류에서Dev

React에서 이름을 유지하면서 두 수준의 구성 요소 아래로 여러 속성을 전달하는 방법은 무엇입니까?

분류에서Dev

반응에서 API 호출로 구성 요소를 테스트하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    낙타 단위 테스트에서 여러 구성 요소를 모의하는 방법은 무엇입니까?

  2. 2

    react-testing-library로 다른 구성 요소로 구성된 구성 요소를 테스트하는 방법은 무엇입니까?

  3. 3

    Jest를 사용하여 localStorage로 반응 구성 요소를 테스트하는 방법은 무엇입니까?

  4. 4

    Jest를 사용하여 localStorage로 반응 구성 요소를 테스트하는 방법은 무엇입니까?

  5. 5

    React Native의 여러 구성 요소에서 액세스 할 수있는 단일 모달 구성 요소를 설계하는 방법은 무엇입니까?

  6. 6

    스타일 구성 요소를 사용하여 구성된 구성 요소를 테마로 지정하는 데 선호되는 방법은 무엇입니까?

  7. 7

    React에서 여러 구성 요소를 통해 데이터를 전달하는 방법은 무엇입니까?

  8. 8

    여러 React js 구성 요소를 제어하는 방법은 무엇입니까?

  9. 9

    useReducer 후크를 사용하여 구성 요소를 테스트하는 방법은 무엇입니까?

  10. 10

    React에서 자식 구성 요소의 상태를 사용하여 부모 구성 요소를 업데이트하는 방법은 무엇입니까?

  11. 11

    React Router를 사용하여 React의 자식 구성 요소가 아닌 App 구성 요소에만 링크를 표시하는 방법은 무엇입니까?

  12. 12

    React의 자식 구성 요소에서 onchange 이벤트로 부모 클래스 구성 요소의 함수를 호출하는 방법은 무엇입니까?

  13. 13

    DOM을 직접 사용하는 객체로 React Hooks를 사용하여 구성 요소를 구성하는 방법은 무엇입니까? (예 : OpenLayers)?)

  14. 14

    react 및 typescript를 사용하여 부모 구성 요소 내에서 자식 구성 요소를 렌더링하는 방법은 무엇입니까?

  15. 15

    React Testing Library를 사용하여 메모 화 된 구성 요소의 콜백을 테스트하는 방법은 무엇입니까?

  16. 16

    React에서 맵을 사용하여 렌더링 된 구성 요소 목록의 특정 구성 요소를 수정하는 방법은 무엇입니까?

  17. 17

    React Bootstrap 선택 구성 요소에 핸들러를 연결하는 방법은 무엇입니까?

  18. 18

    React가 하위 구성 요소를 마운트 해제하는 방법은 무엇입니까?

  19. 19

    소품으로 다른 구성 요소를 렌더링하는 반응 구성 요소를 테스트하는 방법은 무엇입니까?

  20. 20

    기능 구성 요소를 클래스 구성 요소로 변환하는 방법은 무엇입니까?

  21. 21

    JSX / React에서 삼항 연산자로 여러 구성 요소를 렌더링하는 방법은 무엇입니까?

  22. 22

    React 클래스 기반 구성 요소를 기능 구성 요소로 변환하는 방법은 무엇입니까?

  23. 23

    div (React.JS) 내에서 구성 요소를 수직으로 스택하는 방법은 무엇입니까?

  24. 24

    반응 연결 구성 요소를 테스트하는 방법과 구성 요소를 테스트하는 방법은 무엇입니까?

  25. 25

    기능 구성 요소에 여러 ReactJS 상태를 작성하는 방법은 무엇입니까?

  26. 26

    반응 테스트 라이브러리를 사용하여 부모 구성 요소에서 자식 구성 요소의 렌더링을 단위 테스트하는 방법은 무엇입니까?

  27. 27

    자식 구성 요소를 구성 요소로 전송하는 방법은 무엇입니까?

  28. 28

    React에서 이름을 유지하면서 두 수준의 구성 요소 아래로 여러 속성을 전달하는 방법은 무엇입니까?

  29. 29

    반응에서 API 호출로 구성 요소를 테스트하는 방법은 무엇입니까?

뜨겁다태그

보관