용어 정리
- Assertion
- 에러가 없는 프로그램을 작성하기 위한 하나의 수법
- Mocha 기반 테스트 코드
- 테스트 러너를 지원하는 자바스크립트 기반의 테스트 프레임워크
- 자체 assertion 지원 x, 필요한 assertion 라이브러리를 가져와 사용.
- node에서 지원하는 assert 모듈, chai, should.js 같은 BDD TDD 방식의 다양한 assertion 라이브러리 있다.
- mocha는 모듈별도 호출x , 사용한 assertion만 require()로 호출
- BDD, TDD
- TDD : Test 주도 기반 개발
- 즉, 테스트 먼저 작성하고 나서 테스트가 정상적으로 돌아갈 때까지 테스트를 하면서 코드를 작성하는 것.
- 원하는 작업이 제대로 돌아갈 때까지 테스트 코드 작성을 무한대로 반복하며 개발
- 테스트 종류 중 E2E 테스트 : Endpoint 간의 테스트. 사용자 입장에서 직접 노출되는 부분 점검.
- BDD : Behavior 행동 주도 개발
- 사용자의 행위까지 생각하고 테스트하며 개발
- TDD의 한 종류. but 메소드 위주가 아닌 행동을 강조.
- TDD : Test 주도 기반 개발
- test.js
- 새로운 테스트 케이스를 만드는 함수
- expect : 특정 값이 ~일 것이다 라고 정의를 하고 통과하면 테스트를 성공시키고 통과를 하지 않으면 테스트를 실패시킨다.
- toBe : matchers라고 불리는 메소드. 특정 값이 우리가 정한 값과 일치하는지 확인해준다.
const sum = require('./sum');
test('1 + 2 = 3', () => {
expect(sum(1, 2)).toBe(3);
});
- describe
- 테스트 케이스를 작성할 때 describe으로 묶는 경우 여러 테스트 케이스를 묶을 수 있다.
코드 실습
javascript Node.JS로 작성한 CRUD API가 있다고 가정하자.
0. package.json script에 test 추가하기
test를 어떤 코드로 작성할 것인지 (jest, mocha,,, etc) 기입한다.
"scripts": {
"test": "jest --watchAll --verbose"
}
"scripts": {
"test": "env NODE_ENV=test APP_LOGGER=false mocha"
},
1. crudapi.test.js 파일 생성
describe('여러 테스트를 묶을 수 있는 describe', () =>{
beforeEach(async () =>{
// 테스트를 실행하기 전 실행되는 함수
});
afterEach(async () => {
// 테스트가 끝나면 실행되는 함수
});
it('테스트 1 (it은 mocha 메소드)', async () => {
expect(들어오는 값).to.equal(기대하는 값);
expect(들어오는 값).not.include([예상값]); // 포함되지 않아야 함을 기대하는 것
});
it('테스트 2', async () => {
expect(들어오는 값).to.equal(기대하는 값);
expect(들어오는 값).not.include([예상값]); // 포함되지 않아야 함을 기대하는 것
});
})
'Backend > JavaScript,NodeJS, Express' 카테고리의 다른 글
[JavaScript] 실행 컨텍스트와 자바스크립트의 동작원리 (0) | 2022.11.15 |
---|---|
[JavaScript] ES6의 유용한 문법 익히기 (0) | 2022.11.02 |
[Express] Node.js 서버에 Google OAuth 2.0 로그인하기 (0) | 2022.09.15 |
[NodeJS] Multer 와 S3로 이미지 처리하기 (0) | 2022.04.28 |
[NodeJS] sharp 패키지 써보기. (0) | 2022.04.26 |