프론트엔드 정복하기
Jest 본문
Jest는 페이스북에서 만든 테스팅 라이브러리다. 자바스크립트 개발자들로부터 좋은 반응을 얻고 있다.
설치
npm i --save-D jest
-D : 개발 dependency로 설치
test 스크립트 수정
package.json 파일에서
"scripts":{
"test":"jest"
}
npm test 라고 입력하면 jest command를 실행할 수 있다.
테스트 코딩 파일 생성
Jest는 기본적으로 test.js로 끝나거나, __test__ 디렉터리 안에 있는 파일들을 테스트 파일로 인식한다.
만약 특정 테스트 파일만 실행하고 싶은 경우에는 터미널창에 npm test <파일이나 경로>를 입력하면 된다.
테스트 코드 기본
test.js 파일을 생성하고, 그 안에 다음과 같이 코드를 입력한다.
test("1 is 1", () => {
expect(1).toBe(1)
})
=> npm test를 입력하면 test가 통과됐다고 나온다.
**위에서 toBe 부분에서 사용되는 함수를 흔히 Test Matcher 라고 한다.
Test Matcher의 종류
toBe 함수 | 숫자, 문자와같은 객체가 아닌 기본형(primitive)값을 비교할 때 사용 | test("1 is 1", ()=>{ expect(1).toBe(1) }) |
toEqual 함수 | 객체 검증 | function getUser(id){ return{ id, email : `user${id}@test.com` } } test("return a user object", ()=>{ expect( getUser(1) ).toEqual({ id:1, email: `user1@test.com` }) }) |
toBeTruthy 함수 | test("number 0 is falsy but string 0 is truthy", ()=>{ expect(0).tobeFalsy( ) expect("0").toBeTruthy( ) }) |
|
toBeFalsy 함수 | ||
toHaveLength 함수 |
배열의 길이를 체크 |
test("array", ()=>{ const colors=["Red", "Yellow", "Blue"] expect(colors).toHaveLength(3) }) |
toContain 함수 | 특정 원소가 배열에 들어있는지 테스트 | test("array", ()=>{ const colors=["Red", "Yellow", "Blue"] expect(colors).toContain("Yellow") }) |
toMatch 함수 | 정규식 기반의 테스트 | test("string", ()=>{ expect(getUser(1).email).toBe("user1@test.com") expect(getUser(2).email).toMatch(/.*test.com$/) }) |
toThrow 함수 | 예외 발생 여부 테스트 | |
.not 메소드 | 어떤 Matcher 함수가 불만족하는지 테스트 | test("array", ()=>{ const colors=["Red", "Yellow", "Blue"] expect(colors).not.toContain("Green") }) |
참고 사이트