반응형
반응 후크 - 여러 가지 사용 상태 후크를 테스트하는 방법
주 후크가 거의 없는 구성 요소가 있음:
const [resizing, setResizing] = React.useState(false);
const [x, setX] = React.useState(0);
const [y, setY] = React.useState(0);
그리고 어떤 곳에서는 한 번에 두 개 이상의 갈고리를 부르고 있다. 예를 들어, 여기에서는onResize, 나는 둘 다에게 전화한다.setResizing그리고setX또는setY훅:
<ResizableBox
height={520}
width={370}
minConstraints={[370, 520]}
maxConstraints={[Infinity, Infinity]}
className={classes.resizable}
onResize={(e) => {
if (e.movementX !== 0) {
setResizing(true);
setX((prev) => prev + e.movementX);
} else if (e.movementY !== 0) {
setResizing(true);
setY((prev) => prev + e.movementY / 2);
}
}}
onResizeStop={() => {
setResizing(false);
}}
>
나는 상태 변화를 테스트하기 쉬운 클래스 구성요소를 테스트하는 것에 익숙하다.
다음과 같은 방법으로 테스트해 보고자 한다.
const setXSpy = jest.spyOn(React, 'setX');
const setYSpy = jest.spyOn(React, 'setY');
const setResizeSpy = jest.spyOn(React, 'setResize');
it('calls useState hooks correctly', () => {
resizableBox.props.onResize({movementX: 1});
expect(setXSpy).toHaveBeenCalledWith(1);
expect(setYSpy).not.toHaveBeenCalled();
expect(setResizeSpy).toHaveBeenCalledWith(true);
});
하지만 이 예에서 테스트 후크는 어떻게 생겼는지 잘 모르겠어.
당신은 좋은 아이디어가 아닌 그 요소의 구현 세부사항을 테스트하고 있다. (당신은 기본적으로 그 구현에 테스트를 결합하는 것이지, 그 구성 요소가 무엇을 해야 하는지를 결정하기 위해 테스트를 사용하는 것이 아니다.)
대신 사용자처럼 구성 요소를 테스트하여 출력이 올바른지 확인하는 방법을 찾아보겠다.
먼저 테스트 라이브러리를 통합한 다음 여기에 설명된 패턴을 따르십시오.
문제는, 뭘 시험하려는 거야?이 테스트의 예상 결과는 무엇이며 어떤 행동을 포함할 것인가?
LE: 당신의 경우, 리액션 가능 여부를 테스트하려고 하는 것으로 보아, 다음 작업을 시도해 보십시오.mouseDown크기 조정 핸들에 놓고 방출한다.mouseMove그리고mouseUp올바른 일이 발생하는지(코드로부터 상태 값을 사용하여 무엇을 하고 있는지, 무엇을 위해 사용하고 있는지 알 수 없음)
참조URL: https://stackoverflow.com/questions/63825638/react-hooks-how-to-test-multiple-usestate-hooks
반응형
'Programing' 카테고리의 다른 글
| (vue 구성 요소 대신) javascript 파일에서 vuex 상태를 가져오는 방법 (0) | 2022.04.02 |
|---|---|
| typecript에서 markdown(.md) 파일을 가져오는 방법 (0) | 2022.04.02 |
| "Uncaught TypeError: 정의되지 않은 속성 '유형'을 읽을 수 없으며, 관련 내용이 명확하지 않음 (0) | 2022.04.02 |
| 사용 중지 경고:태핑 가능.플러그인이 더 이상 사용되지 않음..hooks에 새 API를 대신 사용 (0) | 2022.04.02 |
| Redex 및 라우터 - 서버 렌더링으로 응답 (0) | 2022.04.02 |