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를 미리 넣어주고 렌더링 테스트를 해야한다. 그 후 실패를 확인하고 테스트코드가 통과하도록 컴포넌트를 만들어주고 중복된 코드가 없는지 확인하며 리팩토링해준다.