Node.js로 만든 API 테스트
API서버를 만들 때, HTTP 검증 도구로 슈퍼테스트를 사용
HTTP 라이브러리는 각 프레임웍이 제공하는 기본 모듈을 사용해서 구현할 수 있다. 노드 js의 http, 브라우저의 XMHttpRequest 클래스가 그것이다.
이걸 직접 사용하기 보다는 한꺼풀 추상화한 라이브러리를 활용하는 편이다.
사용한다.
슈퍼 테스트는 바로 이 슈퍼 에이전트(superagent)를 기반으로한 HTTP 검증 라이브러리다.
HTTP assertions made easy via superagent.
슈퍼테스트의 인터페이스는 노드의 http.Server 객체나 함수를 인자로 받는 형태이다. 인자로 받은 서버 객체가 요청 대기 상태가 아니라면 슈퍼테스트는 임시로 포트를 열어 서버를 요청 대기 상태로 전환해준다.
module.exports = function(app) {
if (typeof app === 'function') {
app = http.createServer(app); }
예제코드에 보면 단순히 익스프레스 객체만 전달하는데 바로 이러한 동작이 있기 때문이다.
const request = require("supertest") // 1번
const express = require("express")
const app = express()
app.get("/user", (req, res) => res.json({ name: "alice" }))
request(app) // 2번 .get("/user") // 3번 .expect(200, { name: "alice" }) // 4번