작성중...
Jest 사용하면서 정리하며 혼자 학습하는 글입니다.
테스트를 작성할 때 vlaue간 특정 조건을 충족하는지 확인해야 하는 경우가 많습니다. expect
는 이러한 것들을 검증할 수 있는 여러 mathcers
에 대한 엑세스를 제공합니다.
자신만의 mathcers를 만들어서 사용할 수 있습니다.
toBe(value)
원시 값을 비교하거나 객체의 참조값(Shallow copy)을 비교합니다
toEqual(value)
객체의 모든 프로퍼티를 재귀적으로 비교 합니다(Deep Copy)
toContain(item)
item을 포함하는 배열(iteratior)인지 확인합니다.
toContainEqual(item)
특정 구조와 값을 가진 항목이 배열에 포함되어 있는지 확인합니다.
toHaveBeenCalled()
mock function이 특정 인수로 호출되었는지 확인합니다.
toHaveBeenCalledWith(arg1, arg2, ...)
mock function이 특정 인수로 호출되었는지 확인합니다. 인수는 toEqual
에서 사용하는 것과 동일한 알고리즘으로 검사됩니다.
toThrow(error?)
함수를 호출할 때 thorw문을 사용했는지 확인합니다.
You must wrap the code in a function, otherwise the error will not be caught and the assertion will fail.
Given-When-Then 패턴은 Test Code 스타일을 표현하는 방식을 말합니다.
Given
테스트에서 구체화하고자 하는 행동을 시작하기 전에 테스트 상태를 설명하는 부분
When
구체화하고자 하는 그 행동
Then
어떤 특정한 행동 때문에 발생할거라고 예상되는 변화에 대한 설명
예시
기능 : 사용자 주식 트레이드
시나리오 : 트레이드가 마감되기 전에 사용자가 판매를 요청
"Given" 나는 MSFT 주식을 100가지고 있다.
그리고 나는 APPL 주식을 150가지고 있다.
그리고 시간은 트레이드가 종료되기 전이다.
"When" 나는 MSFT 주식 20을 팔도록 요청했다.
"Then" 나는 MSFT 주식 80 가지고 있어야 한다.
그리고 나는 APPL 주식 150을 가지고 있어야 한다.
그리고 MSFT 주식 20이 판매 요청이 실행되었어야 한다.
step 1 : given
step 2 : when
step 3 : then
참고
Given-When-Then 패턴
[테스트] How To Test #1. Unit Test (feat. jest)