2017-05-24 4 views
6

Ive가 라우터 v4에 반응하여 약간의 테스트가 다시 구현되어야합니다. 나는 다음과 같은 시나리오를 가지고 : 방법은 두 번 호출 된 경우 확인 setProps 라우터 4와 효소

  • :

    • 효소에 의해 소품을 변경 (methodA가 호출 된 경우 체크) 구성 요소
    • 를 장착 방법 래퍼

      그리고 그것은 오래된 라우터로는 꽤 쉬웠습니다. 그러나 새 라우터는 매우 열심히합니다 :

      구성 요소 (또는 하위)에 예를 들어 012가 들어있는 경우은 구성 요소 렌더링에 적절한 contxt를 제공해야 함을 의미합니다. 그게 왜 MemoryRouter 만들어졌습니다 : 우리는 효소 라이브러리 (http://airbnb.io/enzyme/docs/api/ReactWrapper/setProps.html)에서 setProps 방법에 대해 살펴 경우 하지만 .. : 우리는 구성 요소 (https://reacttraining.com/react-router/web/guides/testing 더 많은 정보) : 렌더링 할 수있는 것과

      const comp = mount(
           <MemoryRouter> 
           <Comp {...someProps} /> 
           </MemoryRouter> 
          ); 
      //here comes assertion about spy getting called 
      

      감사

      루트 구성 요소의 소품을 설정하고 다시 렌더링하는 방법입니다.

      내가 comp.setProps를 호출하는 경우 ({.. newProps이}), 실제로 (MemoryRouter를) 경로 소품을 변경하지만 지옥으로 짜증 내 구성 요소 소품을 변경 나던 것을 의미한다.

      이러한 사례에 대한 통찰력이 있으십니까?

  • 답변

    5

    MemoryRouter 주위에 래퍼를 작성하고 테스트 할 노드까지 모든 소품을 전달할 수 있습니다.

    const CompWrappedWithMemoryRouter = (props) => { 
        return (
         <MemoryRouter> 
          <Comp {...props /> 
         </MemoryRouter> 
        ) 
    } 
    

    다음

    const comp = mount(
         <CompWrappedWithMemoryRouter {...someProps} /> 
        ); 
    

    지금 comp.setProps

    작동합니다 물론 사용