Jest를 이용한 Unit Test
1. 단위 테스트(Unit Test)
- 유닛테스트는 컴퓨터 프로그래밍에서 소스 코드의 모듈이 정상적으로 동작하는지 검증하는 절차이다. 모든 함수와 메소드에 대한 테스트 케이스를 작성하는 절차를 말한다.
개발을 하다보면 내가 짠 코드가 정상적으로 동작하는지 불안한 마음이 들 때가 있다. 이러한 경우 단위 테스트를 진행하여 해당 불안감을 해소할 수 있으며, 부수적인 코드 변경으로 인한 사이드 이펙트를 최대한 줄일 수 있다. 또한 추후 서비스 요구사항이나 리팩토링으로 인한 코드 수정이 필요한 상황에서 유연하고 안정적인 대응이 가능하게 된다.
2. 테스트 종류
유닛 테스트(Unit Tests)
- 가장 밑부분에 해당하는 테스트이며 소형테스트에 속한다. 클래스 범주 내의 함수 단위의 기능을 검증하는 테스트이다. 단위 테스트는 간단하고 명확하며 빠르게 실행된다는 특징을 가지고 있다. 한 함수에 단위 테스트가 많을수록 신뢰도가 높아질 수 있따.
통합 테스트 (Integration Tests)
- 중간에 위치한 테스트이며 중형테스트에 속한다. 서로 다른 모듈 또는 클래스간의 상호간의 동작을 검증하는 테스트이다. 단위 테스트로 함수단위에서 문제가 없다는 것을 확인하였더라도, 모듈 또는 클래스간의 데이터 흐름이 개발자의 의도대로 동작하지 않는 경우도 있어 테스트가 필요하다.
3. Jest 이용
jest - 코드가 제대로 동작하는 지 확인하는 test case를 만드는 테스트 프레임워크이다.
1) 설치
2) jest.config.js 설정
// jest.config.js
module.exports = {
testMatch: ['**/*.spec.[jt]s?(x)', '**/*.test.[jt]s?(x)'],
};
파일이름.test.js 또는 파일이름.spec.js 파일을 실행하도록 설정
3) 테스트 파일 생성
이후 터미널에 jest 입력 시 동작 확인
4) JEST API
describe()
여러 개의 test() 코드를 하나의 테스트 작업 단위로 묶어주는 API.
describe('Testing 1', () => {
test('message equals to be Vue', () => {
// ..
});
test('data equals to be Object', () => {
// ..
});
});
test()
테스트 코드를 돌리기 위한 API.
test('message equals to be Vue', () => {
// ..
});
expect()
expect()에는 주로 테스트 입력 값 또는 기대 값을 넣습니다.
var message = 'Vue';
test('message equals to be Vue', () => {
expect(message).toBe('Vue');
});
toBe()
테스트의 결과를 확인하는 API. 테스트의 예상 결과 값을 넣습니다.
var message = 'Vue';
test('message equals to be Vue', () => {
expect(message).toBe('Vue');
});
beforeEach()
테스트 파일의 각 테스트 코드가 돌기 전에 수행할 로직을 넣는 API.
var message;
beforeEach(() => message = 'Vue');
test('message equals to be Vue', () => {
expect(message).toBe('Vue');
});
test('message equals to be Vue!!', () => {
expect(message + '!!').toBe('Vue');
});
참고 : https://joshua1988.github.io/vue-camp/testing/jest-testing.html#jest-api