안녕하세요.
오늘은 처음으로 JavaScript 환경에서 테스트 코드를 작성해보고 테스팅도 해봤습니다!
테스팅 환경을 구축하는 법과 제가 겪은 시행착오에 대해 정리해보겠습니다.
Mocha VS Jest
JavaScript 환경에서 테스팅 프레임워크로 많이 쓰이는 두 녀석입니다.
둘 중 어떤 프레임워크를 쓸 지에 대해 고민을 하여 각 프레임워크의 특징을 정리해봤습니다.
Jest
페이스북에서 만든 JavaScript 테스팅 라이브러리
설치
npm install --save-dev jest
테스트 파일 생성
Jest의 테스트 파일은 .test.js로 끝나야 Jest가 테스트 파일을 찾아서 실행합니다.
ex) math.test.js
describe('수식 테스트', () => {
test('1+1 확인', () => {
expect(1+1).toEqual(2);
});
test('1-1 확인', () => {
expect(1-1).toEqual(0);
});
});
- describe('~~', () => { ... }) : 여러 테스트들을 그룹으로 묶어서 해당 그룹의 설명을 지정할 수 있음
- test('~~', () => { ... }) : 하나의 테스트 함수. expect()함수 등으로 검증 로직 생성 가능
특징
- 사용방법이 매우 간단함
- 디테일한 커스터마이징은 어려울 것으로 보임
- 복잡한 Mocking 구현이 어려울 것으로 보임
Mocha
설치
npm i -D mocha chai sinon
테스트 파일 생성
Mocha는 test/ 디렉토리 내부의 파일을 테스트한다.
ex) test/math.js
describe('수식 테스트', () => {
it('1+1 확인', () => {
chai.expect(1+1).to.equal(2);
});
it('1-1 확인', () => {
chai.expect(1-1).to.equal(0);
});
});
- describe('~~', () => { ... }) : 여러 테스트들을 그룹으로 묶어서 해당 그룹의 설명을 지정할 수 있음
- it('~~', () => { ... }) : 하나의 테스트 함수
- chai : assertion과 비슷한 느낌. 이 안에 expect()등의 함수로 검증 로직 생성 가능
특징
- 설치할 게 조금 더 많음
- Mocking에서 각 테스트별로 환경이 분리되어있지 않음
- 복잡한 Mocking 구현은 sinon을 사용하여 가능할 것으로 보임
결론
현재는 복잡한 수준의 Mocking이 필요한 단계가 아니라 생각하여 Jest를 선택하여 진행하였습니다.
Jest의 장점인 간단함때문에 우선 Jest로 진행하고, 나중에 복잡한 Mocking등이 필요할 땐 Mocha를 적용해 볼 예정입니다.
+ Jest Import 오류 이슈
저는 Import를 사용하는 것이 익숙해서 package.json을 아래와 같이 type을 module로 하여 사용하고 있었습니다.
{
"main": "index.js",
"type": "module",
"scripts": {
"test": "jest"
},
"devDependencies": {
"jest": "^29.7.0"
}
}
그런데 현재 jest에서는 module형식으로 하여 Import를 사용하는 것이 되지 않았습니다.
검색해보니 babel이란 것의 설정을 변경해주는 등 여러 방법이 나오던데... 오늘은 우선 시간이 없어서 commonjs방식으로 진행하여 완료하였습니다.
추후 jest에서 import를 사용하는 방식을 쓸 수 있도록 하는 방법을 찾아 따로 포스팅할 예정입니다.
SW 테스트 종류
- 단위 테스트 Unit test : 소프트웨어의 최소단위, 보통 함수를 가리킴
- 통합 테스트 Integration test : 단위 기능이 합쳐진 기능에 대한 테스트
- 시스템 테스트 System test : 위 내용보다 더 큰 개념, 전체 시스템에 대한 동작 테스트
- 인수 테스트 Acceptance Test : 고객이 ok할 수 있는지 판단하기 위한 테스트
'부스트캠프 9기 > 챌린지' 카테고리의 다른 글
[부스트캠프 9기 챌린지] 학습 정리 - 09일차 (0) | 2024.07.25 |
---|---|
[부스트캠프 9기 챌린지] 학습 정리 - 08일차 (0) | 2024.07.24 |
[부스트캠프 9기 챌린지] 학습 정리 - 06일차 (0) | 2024.07.22 |
[부스트캠프 9기 챌린지] 회고 - 1주차 (0) | 2024.07.20 |
[부스트캠프 9기 챌린지] 학습 정리 - 04일차 (1) | 2024.07.18 |