February 07, 2021
App
컴포넌트 테스트를 하면서 아.. 트레이너님이 왜 관심사를 강조하셨는지, 관심사에 따라 테스트도 달라지므로 중복되는 것이 아니라고 하셨는지, 왜 E2E테스트와 유사하게 작성된다고 하셨는지, 동작하는 부분을 테스트하라는 것인지에 대해 알게되었다…ㅎㅎㅎㅎㅎ mock function
을 넣어놓고 상태값이 바뀌기만을 기다리며 리렌더링된 화면을 테스트해주려 매우 노력하고 있는 바보같은 나를 발견할 수 있었다 하하테스트 케이스를 작성할때, describe ~ context(상황이 나뉘어지는 경우에만 사용) ~ it 구조를 많이 사용한다.
describe
는 테스트하려는 대상을 서술
context
는 when, with, without
만을 사용해 상황(맥락)을 서술
it
은 테스트 내용을 서술describe
가 여러개가 될 수도 있기때문에 각 describe
에서 사용하는 변수
와 함수
는 해당하는 describe 내부
에서 선언
해주는게 좋다context
를 사용했을때는 대비되는 상황에는 무엇을 테스트해주고 싶은지를 생각해보자, 반대의 상황을 테스트할 필요가 없다면 context
를 사용하지 말자. it
을 사용하자.테스트를 통해 확인하고 싶은게 무엇인지
에 대해 생각해보자. 항상 테스트를 할때는 내가 어떠한 것을 확인하고 싶은가?
에 대한 답이 명확하게 나와야한다.구현을 위해 테스트를 하는지
테스트를 하기위해 구현을 고치고 있진 않은지
를 확인해보자mock functions
를 범용적으로 사용하면 매번 테스트할때마다 같은 함수를 사용하므로 호출횟수가 누적이 되어 테스트할때 의도치 않은 결과가 나올 수 있다. jest.fn
이 호출되었을 경우 초기화해주는 기능을 사용하자(jest.clearAllMocks()
)TDD
는 무조건 테스트 코드 먼저 작성하는것이다. Red-Green-Refactoring
순서를 항상 지켜야한다.Red
단계는 컴포넌트의 인터페이스를 먼저 정의해주는 것이다. 테스트코드에서 props를 미리 넣어주고 렌더링 테스트를 해야한다. 그 후 실패를 확인하고 테스트코드가 통과하도록 컴포넌트를 만들어주고 중복된 코드가 없는지 확인하며 리팩토링해준다.