반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Mock vs Stub
- Vue+Typescript
- vue store
- Spock Mock
- ECMAScript
- @Transaction propagation
- enum
- webpack
- 의존성주입
- nuxtjs/composition-api buildModules
- TypeScript
- 타입스크립트
- 트랜잭션 격리
- mock stub spy
- 자바스크립트
- Docker Desktop 쓰고싶다
- frontend
- Javascript
- Spock Spy
- Rancher Desktop설치
- docker desktop 대체
- TCP/IP
- HTTP란
- Spock Stub
- mock stub
- 공짜로 Docker Desktop같은거 쓰기
- Spock Mock Stub Spy
- DI
- docker desktop 유료화 정책
- @Transaction isolation
Archives
- Today
- Total
끄적끄적
[SPOCK] Spock의 Mock, Stub, Spy에 대해서 알아보자 본문
반응형
Spock의 Mock, Stub, Spy에 대해서 정리해두려고 한다.
Spock으로 테스트코드를 작성하며 mocking을 위해 Stub이나 Mock, Spy를 자주 사용하게 된다.
jUnit을 위주로 짜던 사람을 Stub이 약간 생소할 수도 있다.
Mock - 기대한 값을 받을 것으로 예상되는 객체를 의미하고(Stub과 유사), 테스트를 하는 함수가 잘 동작되는지 행위검증을 위해 사용된다.
Stub - 테스트 중에 만들어지며 정의된 응답을 리턴한다.(정의되지 않으면 응답값은 없다.)
Spy - 일부분만을 정의하여 사용한다. 나머지는 그대로 동작한다.
이렇게 알고 코드를 작성하다보면 Mock과 Stub이 제일 많이 헷갈리게 된다.
간단하게 차이라고 말하면
Mock은 Stub과 유사하지만 Mock으로 지정된 클래스는 메서드가 지정된 Argument와 함께 몇 번 호출되었는지 확인할 수 있다.
그리고 Mock은 null,0을 보내고 Stub은 빈값("",{},[])을 리턴한다.
그래서 가끔 Stub을 쓰던 곳에 호출횟수나 null포인트에 대한 테스트를 하기위해 Mock으로 변경하면
내가 짠 테스트케이스들이 아닌데 다른 케이스들이 실패하는 지옥을 맛 볼 수 있게 된다.
반대로도 마찬가지다 Mock을 쓰는곳에 Stub으로 변경하게 되었을땐 그 반대의 이유로 실패케이스를 볼 수 있게 된다.
이러한 사이드 이펙트를 겪지 않으려면 Mock, Stub, Spy에 대해 용도별로 이해를 하고 선언해주는 것이 바람직하다.
이해를 돕기위해 Mock으로 된 부분을 Stub으로 변경하면 나오는 실패 문구 샘플 스크린샷을 첨부
호출 테스트부분을 제거하거나 Mock으로 선언하라고 친절하게 설명해준다.
반응형
'Back-end > Java' 카테고리의 다른 글
[JAVA] @Transaction 전파 및 격리에 대한 정리 (0) | 2022.04.28 |
---|---|
gradle 환경에서 apache log4j 2.15.0 버전 업데이트하기 (0) | 2021.12.13 |
[GC]Garbage Collector에 대한 정리 (0) | 2021.12.08 |
[JUNIT] Mock Test 작성요령 (0) | 2021.12.07 |
[JUNIT] Intellij Junit Test 실패 No tests found for given includes 에러 해결방법 (0) | 2021.11.29 |
Comments