알고리즘

종만북

  • 3장 - 코딩과 디버깅에 관하여
  • 7.2 - 쿼드트리 뒤집기

TypeScript

필요할 때 볼 것

아래의 내용들은 지금 당장 필요 없는 개념들이므로, 필요할 때 공부한다.

namespace

  • 모듈기반에서는 딱히 쓸 이유가 없다. 자세한 내용은 여기를 참조하면 된다.

jest mocking

  • 여러 번 삽질한 결과, Mocking을 할 때에는 지금은 아래처럼 해야될 것 같다.
// MainAppService.ts
import Category from '../domain/category/Category'
import ICategoryRepository from '../domain/category/ICategoryRepository'

class MainAppService {
  async getCategories(repo: ICategoryRepository): Promise<Array<Category>> {
    try {
      return await repo.getAll()
    } catch (e) {
      throw e
    }
  }
}

export default MainAppService
// MainAppService.test.ts
import MainAppService from '../MainAppService'
import ICategoryRepository from '../../domain/category/ICategoryRepository'
import Category from '../../domain/category/Category'

const Mock = jest.fn(() => {
  const impl: ICategoryRepository = {
    getAll: jest.fn().mockReturnValue(Promise.resolve<Array<Category>>([
      Category.create('test-id', {
        name: 'test-name',
        slug: 'test-slug',
        thumbnailSrc: 'test-thumbnail-src'
      })
    ])),

    getByName: jest.fn(),

    save: jest.fn(),
  }

  return impl
})

describe('MainAppService', () => {
  it('getCategories', () => {
    const appService = new MainAppService()
    const mockRepository = new Mock()

    appService.getCategories(mockRepository)
      .then(categories => {
        expect(mockRepository.getAll).toHaveBeenCalled()
        const category = categories[0]

        expect(category.id).toBe('test-id')
      })
  })
})

생각공작소

  • 2. 푸비니의 원칙

    어떤 사물들로 이루어진 집합을 두 가지 방법으로 계산할 경우, 두 방법 모두 옳다면 결과는 동일해야 한다.

  • 3. 홀짝성의 원칙

    인간은 구분 짓기를 좋아한다.