알고리즘

백준

  • 별 찍기 - 18
    • 아무리 생각해도 답이 맞는데, 왜 출력 오류라고 뜰까... 했는데, 문자열이 끝난 이후 오른쪽에 공백문자가 1개 초과되면 출력오류라고 한다.

생각공작소

    1. 반대의 원칙(귀류법)
    1. 귀납의 원칙

Jest

  • Mock 테스트는 화이트박스 테스트를 할 때 유용하다. 예를 들어, 내가 ApplicationService 객체를 테스트 한다고 생각해보자. 이 객체는 보통 Aggregate의 클라이언트 객체이므로, 여러 Aggregate객체들을 생성하고 호출할 것이다. 이 때, 정말 제대로 호출하는지를 테스트하면 된다.
  • 위의 목적을 달성하고자 할 때, mockFn.mockImplementation을 활용할 수 있다.
// MockCommentRepository.create
const create = jest.fn()
  .mockImplementation((c: ICommentVO) => {
    return Promise.resolve<Comment>(
      Comment.create(c)
    )
  })
// MainAppService.test
test('writeCommentToRestaurantDetail', () => {
  const mockRepository: ICommentRepository
      = new MockCommentRepository()

  const data: ICommentVO = {
    id: 'test-id',
    rid: 'test-rid',
    rating: 5,
    content: 'test-content',
    commenter: {
      mid: 'test-mid',
      type: 'member',
      name: 'test-name',
    }
  }

  appService.writeCommentToRestaurantDetail(
    mockRepository, data, 'test-rid',
  )
    .then(() => {
      // mockRepository의 create메서드를 호출할 때,
      // data를 매개변수로 호출하는지 테스트한다.
      expect(mockRepository.create).toHaveBeenCalledWith(data)
  })
})
  • 아주 기초적인 CRUD기능만을 테스트하기 때문에, 사실상 큰 의미가 있는 테스트는 아니지만 TDD와 DDD 개념으로 처음 만들어보는 프로젝트라서 그런지 배우는게 많은 것 같다.