Node.js

Node 에서 단위테스트/ 통합 테스트

25G 2023. 1. 25. 19:56

단위 태스트란?

단위 테스트는 개발자가 수행하고 자신이 개발한 코드단위를 테스트합니다. 소스코드의 개별 단위를 테스트를하여 사용할 준비가 되었는지 확인하는 테스트 방법입니다. 개발 라이프 사이클 초기 단계에서 버그가 식별되므로 버그 수정비용을 줄이는 데 도움이 됩니다. 메소드를테스트하는 또다른 메소드

단위테스트의 조건

  1. 독립적이여야 하며, 어떤 테스트도 다른 테스트에 의존되선 안됩니다.
  2. 격리 되어야 합니다. Ajax,axios,localStorage등 테스트 대상이 의존하는것을 다른 것으로 대체해야 합니다.

왜 단위 테스트를 해야할까?

  1. 첫번째는 프로그램이 크고 메모리가 많이 들고 다른 리소스가 필요한 경우 로컬 환경에서 쉽게 코드를 실행시켜보기 어렵기 때문이다. 이런프로그램을 개발하는 개발자들은 유닛테스트를 만들어서 빠르게 자신의 코드가 정상적으로 작동하는지 확인 할 수 있다.
  2. 종속성이 있는 다른 클레스 들에게서 버그가 나는것을 방지하기 위함.

단위 테스트에서 request객체 가져오기

단위 테스트를 작성하다보면 경우에따라서 request객체가 필요할때가 있습니다.그럴땐 node-mocks-http 라는 모듈을 가져와서 가짜 객체를 받아서 사용할 수 있습니다.

npm i node-mcks-http --save-dev

해당 모듈을 이용해서 express.js 애플리케이션 라우팅 함수를 테스트 하기 위한 http 객체를 얻을 수 있습니다.
해당 모듈을 통해서 http객채를 얻으면 가짜 json데이터를 넣어서 사용할 수 있습니다.

위와같이 가짜 json파일을 만들어서

다음과같이 단위테스트를 진행 할 수도 있습니다

통합 테스트란?

통합테스트는 모듈을 통합하는 단계에서 수행하는 테스트 입니다.
단위 테스트를 먼저 수행하여 모듈들이 잘 작동되는 것을 확인했다면 이제 이 모듈들을 연동하여서 테스트를 수행합니다. 이렇게 연동해서 테스트하는것이 통합테스트라고 합니다.

통합 테스트를 하는 이유

  1. 모듈들의 상호 작용이 잘이루어 지는지 검증학 위해서
  2. 통합하는 과정에서 발생할 수 있는 오류를 찾기 위해서

supertest 를 이용해서 통합 테스트를 구현

nodejs http 서버를 테스트하기 위해서 만들어진 모듈입니다.

request(app)
.get('/user')
.expect('Content-Type',/json/)
.expect('Content-Length','15')
.expect(200)
.end(function(err,res){
if(err) throw err;
});

'Node.js' 카테고리의 다른 글

express에 에러처리  (0) 2023.01.25
Jest  (1) 2023.01.25
Node.js ?  (0) 2023.01.25
express/ 미들웨어  (0) 2023.01.25
package.json ?  (0) 2023.01.25