jest(https://jestjs.io/) – 테스팅 라이브러리
–save-dev : 개발할 때만 쓴다
npm init으로 package.json을 만들어야 한다
여러가지가 뜨는데 우리는 임시로 하는 것이기 때문에 다 엔터를 치면 된다
약간의 설명(module.exports 와 import 와 export)
export와 import는 ES6 버전부터 사용하게 되었다
일반적인 .js 파일과 다르게 .test.js는 플라스크 아이콘이 나온다
테스트하고자 하는 js를 return 까지 만들어 module.exports로 밖으로 꺼낼 준비를 하고
.test.js 파일에 require로 들고온다.
그다음 jest의 기능인
test(‘문자열’,()=>{expect(require로 들고 온 js).toBe(js를 돌렸을 때 나올 예상 값)}를 이용한다.
문자열은 함수값에 대한 설명이라서 비어도 크게 문제는 없는 부분이며, 뒤에 함수 부분은 테스트 그 자체로써 값이 맞는지 틀린지 확인이 가능하다.
이제 실행을 해줘야 하는데 위에서 만든 package.josn에서 script의 ‘test’ 값을 지우고 ‘jest’로 해준다
그다음 npm test를 하면 테스트를 해준다.
예상한 값과 실행한 값이 맞다면 PASS, 틀렸다면 FAIL과 함께 틀린 부분을 체크해준다.
중요한 점인 export,import 로 받아오는 값은 쓸 수가 없다. 즉, commonjs처럼 module.exports와 require를 쓰는 방식만 현재 사용 가능하다
객채를 비교하는 경우 toBe 가 아닌 toEqual을 쓴다. toStrictEqual 도 같은 기능인데, 좀 더 엄격한 기능이다. 예를 들어 객체 값을 undefined로 넣은 경우 toEqual은 상관을 하지 않지만 toStrictEqual은 undefined도 감지를 해서 값이 틀리게 된다.
npm test 특정테스트파일 : 특정테스트파일만 테스트를 해준다.
.not : .toBe나 .toEqual, .toStrictEqual 앞에 붙이는 조건부이며, pass/fail을 뒤집어준다.
자동완성은 jest snippets
숫자의 경우
정수는 상관이 toBe를 써도 상관이 없으나 소수점인 경우 toBeCloseTo를 써야 한다. 이유는 부동 소수점이기 때문이다.
2진법을 쓰기 때문에 0.1=0.0625+0.03125+~ 와 같이 계속해서 내려가야 하기 때문에 기계의 계산값으로는 0.30000000000000004 가 나온다.
문자열의 경우
정규표현식을 통해서 확인 할 수 있다 : toMatch
toMatch 안에 /조건부/ 를 넣어둔다
배열의 경우
toContain : 배열에 있는 값인지 확인 할 수 있다.
오류의 경우 : toThrow
이것은 오류가 있는 함수인지 확인하는 식인데 조금 복잡하다. expect에 이번에는 함수를 넣어야 하는데 이 때 throw new Error(문자열)이 있어야 한다.
이 부분은 좀 더 찾아야 할 듯 하다. 단순 설명으로는 이해하기 쉽지 않다