[TDD/Jest]2.Jest 간단하게 이해해보기
JEST
Jest는 페이스북에서 만들어서 React와 더불어 많은 자바스크립트 개발자들로 부터 좋은 반응을 얻고 있는 테스팅 라이브러리다. 출시 초기에는 프론트엔드에서 주로 쓰였지만 최근에는 백엔드에서도 기존의 자바스크립트 테스팅 라이브러리를 대체하고 있다.
Jest : 올인원 테스팅 프레임워크
Jest는 단순한 테스팅 라이브러ㅣ라기보다 '테스팅 프레임워크'라고 불릴 정도로 기존 JS 테스팅 라이브러리들과는 다르다. Jest 이전에는 자바스크립트 코드를 테스트하라면 여러가지 테스팅 라이브러리를 조합해서 사용하곤 했다. 예를 들어, (코드스테이츠 코드 테스트로 사용했던 Mocha, Chai, Expect)Mocha
나 Jasmin
을 Test Run Tool로 사용하고 Chai나 Expect와 같은 Test Matcher를 사용했다. 또 Sinon
이나 Testdouble
과 같은 다른 Test Mock
과 같은 라이브러리도 함께 사용해야만 했다.
참고 링크
- Mocha link : https://www.npmjs.com/package/mocha
- Jasmin link : https://www.npmjs.com/package/jasmine-spec-reporter
- Sinon link : https://www.npmjs.com/package/sinon
- Testdouble link : https://www.npmjs.com/package/testdouble
이 패키지들은 유사하면서 다른 API를 가지고 있어서 프로젝트를 진행하며 테스팅 툴로 사용하면서 혼돈이 많아졌다. 하지만 Jest는 라이브러리 하나만 설치하면 Test Run/Match/Mock 프레임워크까지 제공하기 때문에 테스팅 프레임워크로 많이 사용되고 있다. (한 주에 천만명 가까운 개발자들이 채택하고 있다..)
Jest 한번 사용해보기
지난번에는 간단하게 Jest.js에 있는 튜토리얼을 이용해 간단한 예제 테스트 코드만 짜봤다. 이번에는 실제로 테스트를 실행하면 나오는 결과를 통해서 실제로 사용 환경을 살펴보도록 하겠다.
테스트 코드
test.js
test("1 is 1", () => {
expect(1).toBe(1);
});
다음과 같은 파일 작성하고 npm test
를 실행해보면 다음과 같은 결과물을 터미널을 통해 확인할 수 있다.
$ npm test // 우선 스크립트를 test에서 jest로 바꿔줘야한다.
> [email protected] test /jesttest
> jest
PASS ./test.js
✓ 1 is 1 (3ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 0.868s, estimated 1s
Ran all test suites.
다음과 같이 통과한 시간과 통과하게된 테스트를 설명해주는 텍스트가 출력되는데, 실제 위에 작성한 코드를 간단하게 설명해보면 다음과 같다.
test("test description", () => { // callback
expect("test object").toBe("toBeValue");
});
test의 첫번째 변수로는 테스트의 내용을 적고, 값이 나오길 기대하는 값의 변수값이 expect에 들어가게 되고 toBe의 결과물에 기대값이 들어가게 된다. toBe()
함수는 Test Matcher
의 일종인데 이 부분의 설명은 나중으로 미루겠다. 테스트를 하고 기대되는 결과값이랑 Match
시키는 함수라고 볼 수 있다. 따라서 전달인자로 결과 예상값이 들어가게된다. (단, toBe
Matcher의 경우에는 Primitive값을 비교할 때만 사용한다. ( ex string, number,)
npm test
혹은 npm jest
를 실행시키면 프로젝트 내부의 모든 테스트 파일을 찾아서 실행시켜준다. 기본적으로 test.js나 __test__
디렉토리를 추적해 내부의 파일을 전부 test 파일로 인식한다. 만약 특정 테스트만 실행하고 싶은 경우에는 npm test
뒤에 특정 파일명 혹은 경로를 입력해주면 된다.
Author And Source
이 문제에 관하여([TDD/Jest]2.Jest 간단하게 이해해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@brian_kim/TDDJest2.Jest-간단하게-이해해보기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)