알고리즘

종만북

  • 8.7 - 원주율 외우기

Git

  • rebase에서 squash할 때 당연하지만 이전 커밋이 존재해야한다.
  • 커밋시 upstreambranch 단위이다.

Nock

  • HTTP Test를 위한 모듈
  • HTTP Request를 인터셉트하여 Mocking할 수 있다.
  • nock.back을 활용하면 실제 응답을 Fixture로 활용할 수 있다.
// api.ts
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
  }
}

// api.test.ts
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()

    // failed. 1개만 날아온다.
    // 원래는 200개가 날아와야 하는데, nock이 인터셉트하여 응답을 보내준다.
    expect(todos).toHaveLength(200)
  })
})

Supertest

  • HTTP Agent
  • node.jshttp.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적용을 테스트 파일들에는 적용을 안해서 뜨는 것이었다... 갓스톰...