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
- Go언어
- Python
- docker
- DP
- scala
- 스칼라
- 동적프로그래밍
- leetcode
- 주키퍼
- 코드워
- Linux
- 알고리즘
- 문제풀이
- codewars
- Java
- programmers
- go
- redis
- 자바
- zookeeper
- boj
- gradle
- HBase
- 리눅스
- 프로그래머스
- OOM
- dynamic programming
- golang
- 파이썬
- 튜토리얼
Archives
- Today
- Total
파이문
Mockito 를 사용하는 예제 본문
728x90
Mockito
모킹할 때 리턴과 동시에 어떤 함수가 실행되기를 원할 때
테스트를 진행하다 보면 thenReturn
으로 함수의 결과 값을 임의로 지정할 때가 많지만 때로는 함수 실행 시 동작해야 하는 어떤 액션을 지정하고 싶을때도 있다.
즉, 정리해보면 A()
함수가 리턴하는 값은 a
지만 B()
라는 메서드도 실행되고 있다고 가정해보자.
A() {
...
B();
return a;
}
주로 모킹은 아래와 같이 할 것이다.
Mockito.when(A()).thenReturn(a);
B()
의 동작은 감춰지게 되는게 보통이다. 그러나 B()
가 디비 업데이트라던지, 다른 어떤 외부 동작(?) 일 때 필연적으로 제어해야할 때가 있다. (내가 그랬다.)
그럴 때는 이렇게 사용하면 된다.
Mockito.when(A()).thenAnswer(invocation -> {
B();
return a;
});
그러면 B()
제어 뿐만 아니라 리턴해야 하는 값 a
도 제대로 동작한다.
참고
모킹할 때 함수 호출 순서에 따라 리턴 값을 다르게 주고 싶을 때
무슨 말인가 하면 어떤 함수 A()
에 대한 모킹을 할때, 첫번째 호출 될 때는 a
, 두번째 호출 될 때는 b
와 같은 식으로 리턴 받으려는 결과를 호출 순서에 따라 다르게 주고 싶을 때가 있다.
예를 들면 처음 호출 때는 실패했지만, 두번째는 성공하는 테스트 코드를 짤 때 같은 경우에
Mockito
는 정말 간단하게 이를 지정할 수 있다.
Mockito.when(A()).thenReturn(a).thenReturn(b);
또는
Mockito.when(A()).thenReturn(a, b);
처럼 하면 된다.
'Java' 카테고리의 다른 글
멀티쓰레드에서 싱글톤 클래스 사용 예제 (0) | 2020.10.08 |
---|---|
JDK 14 톺아보기 (0) | 2020.10.07 |
CountDownLatch vs CyclicBarrier (0) | 2020.09.24 |
멀티쓰레드 환경에서 캐시 구현하기 (0) | 2020.06.27 |
Comments