jest 및 supertest를 사용하여 node-express api에서 테스트 구현
모카, 제스트, 자스민 등
아래에서 jest 및 supertest를 통한 단위 테스트를 살펴보겠습니다.
Jest는 인기 있는 테스트 프레임워크입니다. Facebook에서 개발 및 유지 관리합니다. jest의 주요 기능 중 하나는 잘 문서화되어 있고 병렬 테스트 실행을 지원한다는 것입니다. 즉, 각 테스트는 성능을 최대화하기 위해 자체 프로세스에서 실행됩니다. 또한 테스트 시청, 적용 범위 및 스냅샷과 같은 여러 기능이 포함되어 있습니다.
다음 명령을 사용하여 설치할 수 있습니다.
npm install --save-dev jest
기본적으로 Jest는 루트 폴더의 "tests"라는 폴더에서 모든 테스트 파일을 찾을 것으로 예상합니다.
jest를 사용한 테스트의 예:
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
다음은 jest에서 지원하는 일부 assert 유형입니다.
되려고
예: expect(2+2).toBe(4),
동등하다
예:- 기대(데이터).toEqual({하나: 1, 둘: 2})
되지 않도록
예:- 기대(2+2).not.toBe(5)
toBeNull, toBeUndefined, toBegreaterThan, toBeLessThan, toContain, toMatch 등.
다음 명령을 사용하여 개별 파일을 실행할 수 있습니다.
jest <test file name>
package.json에 추가할 테스트 폴더의 모든 테스트 파일을 실행하는 스크립트
"test": "jest"
npm 테스트를 사용하여 테스트를 실행할 수 있습니다.
API 엔드포인트 테스트는 jest와 supertest라는 또 다른 라이브러리의 도움으로 수행할 수 있습니다.
다음을 사용하여 슈퍼 테스트 설치
npm install --save-dev supertest
테스트 폴더에서 아래와 같이 샘플 api 테스트를 구현할 수 있습니다.
const request = require('supertest')
const app = require('./app')
const baseUrl = 'http://localhost:8000'
describe('sends users', (app) => {
it('should return users', async () => {
const res = await request(baseUrl)
.get('/getUsers');
expect(res.statusCode).toEqual(200);
expect(res.body).toHaveProperty('users');
});
});
describe('Post Endpoints', () => {
it('should create a new post', async () => {
const res = await request(baseUrl)
.post('/posts')
.send({
userId: 1,
title: 'test',
})
expect(res.statusCode).toEqual(200)
expect(res.body).toHaveProperty('post')
})
})
npm test를 사용하여 테스트를 실행하면 아래와 같이 터미널 콘솔에서 테스트 결과를 볼 수 있습니다.
자세한 내용은 다음을 방문하십시오.
https://jestjs.io/
https://www.npmjs.com/package/supertest
Reference
이 문제에 관하여(jest 및 supertest를 사용하여 node-express api에서 테스트 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/akshaiim/implement-testing-in-node-express-apis-using-jest-and-supertest-jal텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)