Middleware
"Middleware functions are functions that have access to the request object (req), the response object (res), and the next function in the application’s request-response cycle."
미들웨어 함수는 req(요청) 객체, res(응답) 객체, 그리고 어플리케이션 요청-응답 사이클 도중 그 다음의 미들웨어 함수에 대한 엑세스 권한을 갖는 함수이다.
미들웨어란 간단하게 말하면 클라이언트에게 요청이 오고 그 요청을 보내기 위해 응답하려는 중간(미들)에 목적에 맞게 처리를 하는, 말하자면 거쳐가는 함수들이라고 보면 되겠다.
예를 들어서 요청-응답 도중에 시간을 콘솔 창에 남기고 싶으면 미들웨어 함수를 중간에 넣어서 표시를 한 뒤에 계속해서 다음 미들웨어들을 처리할 수 있도록 하는 것이다.
다음 미들웨어 함수에 대한 엑세스는 next 함수를 이용해서 다음 미들웨어로 현재 요청을 넘길 수 있다.
next라는 말에서 알 수 있듯이 next를 통해 미들웨어는 순차적으로 처리된다.
미들웨어의 특징을 간략히 정리하면 다음과 같다.
- 모든 코드를 실행
- 다음 미들웨어 호출(미들웨어가 순차적으로 실행)
- res, req 객체 변경 가능
- 요청-응답 주기를 종료(response methods를 이용)
이 미들웨어들을 어떨 때 사용하면 편리하냐면 페이지를 렌더링할 때 사용자 인증을 앞서 거친 후에 렌더링하고 싶을 때 사용자 인증 미들웨어를 작성하고 앞에 삽입하게 되면 편리하다. 혹은 로그를 먼저 남기고 싶을때도 로그를 남기는 미들웨어를 작성하고 앞서 삽입하면 편리하다.
미들웨어엔 순서가 있다. 코드의 상단에 있는 것일수록 먼저 실행되고 하단에 있는 것일수록 나중에 실행된다. 하단 미들웨어의 경우 위에서 next를 하느냐 마느냐에 따라 실행이 될 수도 안 될 수도 있는데 경우마다 조금씩 다르다.
참고링크
Jest
테스트는 서비스를 개발하고 유지하기 위한 필수 조건중 하나입니다. 테스트는 모든 기능을 확인하는 시간을 줄여 주고, 버그 발생을 예방하거나 같은 버그가 다시 발생하지 않도록 해줍니다. 또한 코드를 수정하였을 때, 수정한 코드의 사이드 이펙트를 찾아주거나 예상치 못한 동작을 발견해 주기도 합니다.
이처럼 테스트 코드는 소프트웨어 개발에서 중요한 역할을 하고 있습니다. 그리고 대부분의 언어에서는 해당 언어에 맞는 테스트 프레임워크들이 존재하고 있습니다. JavaScript에서도 Mocha, Jasmine, Karma 등 많은 테스트 프레임워크가 존재하며, Jest도 자바스크립트 테스트 프레임워크중 하나입니다.
Jest는 리액트와 마찬가지로 페이스북에서 개발하고 관리하는 자바스크립트 테스트 프레임워크입니다. 자바스크립트 테스트 프레임워크이므로 리액트 이외에도 타입스크립트, 노드, Angular, Vue 등도 테스트가 가능합니다.
Jest는 단순함에 집중하여 누구나 쉽게 테스트를 할 수 있도록 하고 있습니다. Jest는 단순함 이외에 다음과 같은 특징을 가지고 있습니다.
제로 설정
테스트를 시작하기 위해 많은 테스트 프레임워크들이 많은 설정을 해야 하지만, Jest는 이런 설정때문에 쉽게 테스트를 하지 못하는 문제를 해결하기 위해 제로 설정을 지원하고 있습니다.
스냅샷
자바스크립트에서 값을 일일이 확인하기 어려울 정도로 큰 오브젝트가 존재할 수 있습니다. 이런 경우를 대비하여 Jest는 스냅샷 기능을 제공하며, 스냅샷을 통해 큰 오브젝트를 저장한 후, 추후 코드 변경에 의해 오브젝트가 변경되면 에러를 표시하도록 하고 있습니다. 리액트에서는 이 스냅샷 기능을 통해 화면에 렌더링된 리액트 컴포넌트의 변경 사항을 체크합니다.
테스트 코드의 분리
Jest에서 테스트 코드는 완전 분리되어 있고, 서로 영향을 주지 않습니다. 이렇게 완전 분리된 테스트는 동시 실행을 가능하게 하며, 동시 진행되는 테스트는 전체 테스트 시간을 단축시켜 줍니다.
간단한 API
Jest는 단순함을 지향하기 때문에, 제공하는 API도 매우 단순합니다. 또한 –coverage 옵션을 사용하여 간단하게 테스트 코드 커버리지를 확인할 수 있습니다.
참고링크
'IT > Node.js' 카테고리의 다른 글
Sequelize (0) | 2021.12.25 |
---|---|
Node.js (0) | 2021.12.12 |
Node.js - ORM/Sequelize (0) | 2021.11.28 |
Node.js - Restful API/package json (0) | 2021.11.22 |
Node.js - 기초 (0) | 2021.11.16 |