공부/Test Code

Mock

kkkkkdddddhhhhh 2024. 1. 11. 03:42

TEST Double

  • Dummy :
    • 아무것도 하지 않는 깡통 객체
  • Fake:
    • 단순한 형태로 동일한 기능은 수행하나, 프로덕션에서 쓰기에는 부족한 객체 (Ex. FakeRepository)
  • Stub:
    • 테스트에서 요청한것에대해 미리 준비한 결과를 제공하는 객체
    • 정의하지않은 그 외에는 응답하지 않는다.
  • Spy:
    • Stub이면서 호출된 내용을 기록하여 보여줄 수 있는 객체.
    • 일부는 실제 객체처럼 동작시키고 일부만 Stubbing 할 수 있다.
  • Mock:
    • 행위에대한 기대를 정의하고, 그에 따른 동작을 하도록 만들어진 객체.

Stub 과 Mock의 차이

  • Stub 은 상태 검증
    • 어떠한 검증 이후 스텁의 상태에따라 검증
  • Mock은 행위 검증
    • Mock이 진행한 어떠한 행위에대한 중심으로 검증.

Classicist VS Mockist

Classicist :

  • 꼭 필요한 경우에만 mock을 사용하자

Mockist:

  • 모든 테스트에 mock을 사용하자

Mocking을 사용하면 좋은 상황 :

  • 외부 시스템이 테스트에 필요할 때
    • 외부시스템은 우리가 개발한것이 아니기 때문.
  • 그래서 주로 Presentation Layer Test에서 mock 사용된다.
  • Mocking 시에 실제 프로덕션 코드에서의 런타임 시점에 일어날 일을 정확하게 Stubbing 했다고 단언할 수 있을까?

'공부 > Test Code' 카테고리의 다른 글

TDD  (0) 2024.01.11
TEST = []  (0) 2024.01.11
Spring & JPA 기반 테스트  (0) 2024.01.11
더 나은 테스트 작성하기  (0) 2024.01.11
UnitTEST  (0) 2024.01.11