(void) 메소드가 DAO 내부에서 호출되고 있는지 확인하려고합니다. 커밋 포인트를 사용하여 해당 포인트까지 결과 목록을 보내고 목록을 재설정하고 계속합니다. 목록에 4 가지가 있고 커밋 지점이 1이라고 가정하면 “보내기”방법이 4 번 호출 될 것으로 예상합니다. 메소드를 작성하여 메소드가 한 번 호출되는지 확인할 수 있습니다.
Mockito.verify(mock).send()
통과합니다. 그러나 호출 횟수를 확인하고 싶습니다. 나는 그렇게 생각할 것이다
Mockito.verify(mock.send(), times(4))
충분하지만 매개 변수가 확인에 적합하지 않다고 말합니다.
내가 변경하는 경우 또한, Mockito.verify(mock).send()에 Mockito.verify(mock.send())나 Mockito.verify((mock).send())나는 같은 오류가 발생합니다. 이것에 대한 생각?
답변
필요한 방법은 Mockito # verify입니다 .
public static <T> T verify(T mock,
VerificationMode mode)
mock당신의 조롱 객체이고 mode는 IS VerificationMode모의를 확인하는 방법을 설명하는. 가능한 모드는 다음 과 같습니다.
verify(mock, times(5)).someMethod("was called five times");
verify(mock, never()).someMethod("was never called");
verify(mock, atLeastOnce()).someMethod("was called at least once");
verify(mock, atLeast(2)).someMethod("was called at least twice");
verify(mock, atMost(3)).someMethod("was called at most 3 times");
verify(mock, atLeast(0)).someMethod("was called any number of times"); // useful with captors
verify(mock, only()).someMethod("no other method has been called on the mock");
메소드와 이러한 검증 모드 Mockito를 사용하려면 클래스에서 정적 가져 오기가 필요 verify합니다.
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.atMost;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.only;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
따라서 귀하의 경우 올바른 구문은 다음과 같습니다.
Mockito.verify(mock, times(4)).send()
이는 모의 객체 에서 메소드 send가 4 번 호출 되었는지 확인 합니다. 호출 횟수가 4 회 미만이면 실패합니다.
확인하려는 경우 메소드가 한 번 호출 된 경우을 전달할 필요가 없습니다 VerificationMode. 간단한
verify(mock).someMethod("was called once");
충분할 것입니다. 내부적으로 사용합니다 verify(mock, times(1)).someMethod("was called once");.
“사이에”확인을 달성하기 위해 동일한 모의에 대해 여러 개의 확인 호출을 가질 수 있습니다. Mockito는 이와 같은 것을 지원하지 verify(mock, between(4,6)).someMethod("was called between 4 and 6 times");않지만 우리는 쓸 수 있습니다.
verify(mock, atLeast(4)).someMethod("was called at least four times ...");
verify(mock, atMost(6)).someMethod("... and not more than six times");
대신 같은 행동을 취하십시오. 경계가 포함 되므로 메서드를 4, 5 또는 6 회 호출했을 때 테스트 사례가 녹색입니다.
