Jest 및 Supertest로 Express.js 백엔드를 테스트하는 방법
7396 단어 javascriptwebdevprogrammingnode
이 기사에서는
supertest
모듈을 사용하여 Express.js 백엔드를 쉽게 테스트할 수 있는 방법을 보여드리겠습니다!우선 단일 GET 엔드포인트가 있는 샘플 앱이 있습니다.
// server.js
import express from 'express';
const app = express();
app.get('/config', function(req, res) {
res.json({ version: '0.0.1' });
});
export const server = app;
테스트에서
GET /config
상태 코드 200
를 반환하고, 콘텐츠 유형이 json
이며, 이 JSON이 정확히 무엇인지 확인하려고 합니다.테스트를 작성하기 전에
npm install --save supertest
를 입력하여 supertest
모듈을 node_modules
에 설치하고 저장할 수 있습니다. 또한 jest
로 테스트 환경을 이미 구성했을 것으로 예상합니다.--save-dev
대신 --save
또는 yarn
대신 npm
옵션이 마음에 들면 이 옵션도 사용할 수 있습니다. 여기서는 특별히 중요하지 않습니다.일단 그것이 제자리에 있으면 테스트 작성을 진행할 수 있습니다.
따라서
supertest
로 Node.js 백엔드를 테스트할 수 있으려면 테스트 파일로 가져온 다음 서버에 대한 테스트 요청을 수행하는 데 사용할 함수를 만들어야 합니다.const requestWithSupertest = supertest(server);
그러면 테스트 중인 시스템에서 응답을 받을 수 있습니다.
const res = await requestWithSupertest.get('/config');
계속 진행하기 전에 요청 약속을 이행해야 하므로
await
를 추가해야 합니다.이제 요청이 완료되고 응답이
res
변수에 저장되면 어설션을 추가해 보겠습니다. expect(res.status).toEqual(200);
expect(res.type).toEqual(expect.stringContaining('json'));
expect(res.body).toEqual({ version: '0.0.1' });
계획대로 3가지 핵심 사항을 테스트합니다. 응답 상태 코드, 응답 유형 및 응답 본문입니다.
다 더하면 이렇게 됩니다.
// test.js
import '@babel/polyfill'; // support for async/await
import supertest from 'supertest';
import { server } from '../server.js';
const requestWithSupertest = supertest(server);
test('GET /config should be implemented according to the spec', async () => {
const res = await requestWithSupertest.get('/config');
expect(res.status).toEqual(200);
expect(res.type).toEqual(expect.stringContaining('json'));
expect(res.body).toEqual({ version: '0.0.1' });
})
좋은 아이디어는 이러한 테스트 케이스를 별도의 테스트로 분할하고 단일
describe
블록 아래에 결합하는 것입니다. 그러나 데모 목적으로 그럴 필요가 없습니다.supertest
로 Node.js/Express.js 백엔드를 테스트하는 것은 매우 편리합니다. 바퀴를 재발명할 필요가 없습니다. express.js
서버의 인스턴스 주위에 래퍼를 만들고 요청을 보내십시오.Learn Full Stack JavaScript
Reference
이 문제에 관하여(Jest 및 Supertest로 Express.js 백엔드를 테스트하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/coderslang/how-to-test-your-express-js-backend-with-jest-and-supertest-3g83텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)