⚡ 생각대로 살지 않으면 사는대로 생각한다.
⚡ 나는 어차피 잘 될 놈이다. 이미 잘 되고 있고, 계속해서 잘 되고 있다.


05가 빠진 이유 : 연습문제라서 그냥 skip함.
따로 (잘) 풀었음..


Mock 객체에 어떤 일이 일어났는지 확인이 가능하다.
verify() 메서드로 확인이 가능하다.

verify(memberService, times(1)).notify("{ArgumentsMacher}");
// "memberSerive의 notify({ArgumentsMacher}) 메서드가 time(숫자)만큼 호출되었어야 한다."는 의미
// 만약에 안 했다면 에러 발생한다.

verify(memberService, never()).validate(any());
// memberService가 validate메서드를 한번도 호출하지 않아야 한다.

이런 식으로 Mock 객체가 어떤 일을 했는지 확인 가능하다.

어떤 순서로 테스트를 수행했는지

verify(memberService, times(1)).notify(study);
verify(memberService, times(1)).notify(member);
verify(memberService, never()).validate(any());

InOrder inOrder = inOrder(memberService);
inOrder.verify(memberService).notify(study);
inOrder.verify(memberService).notify(member);

// InOrder타입 inOrder은 순서를 나타내준다.
// verify 메서드가 위로 수행되는데, 
// inOrder에서 그에 대한 차례를 검증해준다.

혹여 어느 특정 메서드까지만 실행하고, 그 이후론 실행이 되지 않아야 할 때,

verify(memberService, times(1)).notify(study);
verifyNoMoreInteractions(memberService);
// memberService.notify(study)를 실행시킨 이후로, memberService에서 아무 일도 일어나지 않아야 한다.
// 일어나지 않아야 테스트를 통과한다. 
// 하지만, test쪽이 아닌 main쪽의 memberService가 
// notify(study)를 호출하고, 다른 코드를 수행하면, 에러가 발생한다.

참고 레퍼런스

특정 메소드가 특정 매개변수로 몇번 호출 되었는지, 최소 한번은 호출 됐는지, 전혀 호출되지 않았는지
Verifying exact number of invocations
어떤 순서대로 호출했는지
Verification in order
특정 시간 이내에 호출됐는지
Verification with timeout
특정 시점 이후에 아무 일도 벌어지지 않았는지
Finding redundant invocations

profile
쌩수 Git >> https://github.com/SsangSoo?tab=repositories

0개의 댓글