Facebook에서 개발한 테스팅 라이브러리
페이스북에서는 Jest를 단순한 테스팅 라이브러리가 아닌 “테스팅 프레임워크”라고 부르는 만큼 기존 자바스크립트 테스팅 라이브러리와는 차별점이 있습니다. Jest 이전에는 자바스크립트 코드를 테스트하라면 여러 가지 테스팅 라이브러리를 조합해서 사용해야 했는데요.
예를 들어, Mocha나 Jasmin을 Test Runner로 사용하고, Chai나 Expect와 같은 Test Matcher를 사용했으며, 또한 Sinon과 Testdouble 같은 Test Mock 라이브러리도 필요했었습니다. 이 라이브러리들은 굉장히 유사하지만 살짝씩 다른 API를 가지고 있었기 때문에, 여러 프로젝트에 걸쳐서 일하는 자바스크립트 개발자들에게 혼란을 주기도 했는데요. 하지만 이제는 Jest는 라이브러리 하나만 설치하면, Test Runner와 Test Matcher 그리고 Test Mock까지 몽땅 해결이 됩니다.
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [MoviesService],
}).compile();
service = module.get<MoviesService>(MoviesService);
});
describe('getAll()', () => {
it('should be array', () => {
const result = service.getAll();
expect(result).toBeInstanceOf(Array);
});
});
describe('/movies', () => {
it('/movies (GET)', () => {
return request(app.getHttpServer()).get('/movies').expect(200).expect([]);
});
it('/movies (POST)', () => {
return request(app.getHttpServer())
.post('/movies')
.send({
title: '남자가 사랑할 때',
year: 2023,
genres: ['test'],
})
.expect(201);
});
Jest로 비동기 로직테스트와 실제로 프로젝트를 구현하며 테스트 자동화를 구현해보며...
개발자로서 배울 점이 많은 글이었습니다. 감사합니다.