알고리즘
종만북
Git
rebase
에서 squash
할 때 당연하지만 이전 커밋이 존재해야한다.
- 커밋시
upstream
은 branch
단위이다.
Nock
- HTTP Test를 위한 모듈
- HTTP Request를 인터셉트하여 Mocking할 수 있다.
nock.back
을 활용하면 실제 응답을 Fixture로 활용할 수 있다.
import axios from 'axios'
export async function getTodos() {
try {
const res = await axios('https://jsonplaceholder.typicode.com/todos')
return res.data
} catch (e) {
throw e
}
}
import { getTodos } from './api'
import nock from 'nock'
describe('api test', () => {
nock('https://jsonplaceholder.typicode.com')
.get('/todos')
.reply(200, [ { todo: 'hi'} ])
test('getTodos', async () => {
const todos = await getTodos()
expect(todos).toHaveLength(200)
})
})
Supertest
- HTTP Agent
node.js
의 http.Server
인스턴스를 매개변수로 받고, Request, Response를 테스트할 수 있다.
import app from './app'
import request from 'supertest'
describe('GET /', () => {
test('respond with json', async () => {
await request(app)
.get('/')
.expect('Content-Type', /json/)
.expect(200)
})
})
TypeScript \& WebStorm
- 도대체 왜? WebStorm에서 테스트 파일에서만 자꾸
esModuleInterop
플래그를 켜라는 에러 메세지가 뜨는 것일까? 난 분명히 플래그를 줬는데! 알고보니 테스트 파일들을 exclude
시켰는데, 이것 때문에 WebStorm에서 tsconfig.json
적용을 테스트 파일들에는 적용을 안해서 뜨는 것이었다... 갓스톰...