학습 Mocktio - ArgumentCaptor(매개변수 캡처) 캡처 방법 매개변수를 사용하여 검증

1836 단어 mock
일부 장면에서 방법의 반환값과 호출을 검증해야 할 뿐만 아니라 일련의 상호작용을 검증한 후에 전달된 방법의 매개 변수를 검증해야 한다.그러면 우리는 파라미터 포획기로 전송 방법의 파라미터를 포획하여 우리의 요구에 부합되는지 검증할 수 있다.
ArgumentCaptor 소개
ArgumentCaptor 객체의 forClass(Class clazz) 방법을 사용하여 ArgumentCaptor 객체를 구성합니다.그리고 검증할 때 방법의 매개 변수를 포획하고 마지막으로 포획된 매개 변수의 값을 검증할 수 있다.만약 방법에 여러 개의 파라미터가 검증을 포획하려면 여러 개의 ArgumentCaptor 대상 처리를 만들어야 한다.
ArgumentCaptor의 Api
argument.capture () 포획 방법 매개 변수
argument.getValue () 는 방법 매개 변수 값을 가져옵니다. 방법이 여러 번 호출되면 마지막 매개 변수 값을 되돌려줍니다.
argument.getallValues() 메서드를 여러 번 호출한 후 여러 매개변수 값을 반환합니다.
응용 실례
@Test
public void argumentCaptorTest() {
    List mock = mock(List.class);
    List mock2 = mock(List.class);
    mock.add("John");
    mock2.add("Brian");
    mock2.add("Jim");
    
    ArgumentCaptor argument = ArgumentCaptor.forClass(String.class);
    
    verify(mock).add(argument.capture());
    assertEquals("John", argument.getValue());
    
    verify(mock2, times(2)).add(argument.capture());

    assertEquals("Jim", argument.getValue());
    assertArrayEquals(new Object[]{"Brian","Jim"},argument.getAllValues().toArray());
}

먼저 ArgumentCaptor를 구축하려면 캡처 매개변수를 전달해야 하는 객체가 필요합니다. 예를 들어 String입니다.다음에verify 방법의 매개 변수에서argument를 호출해야 합니다.capture () 방법으로 입력한 파라미터를 포획한 다음에argument 변수에 파라미터 값을 저장하여argument를 사용할 수 있습니다.getValue()를 가져옵니다.어떤 대상이 여러 번 호출된 후, 예를 들어mock2 대상은 이때argument를 호출합니다.getValue () 는 마지막으로 호출된 인자를 가져옵니다.모든 매개 변수 값을 가져오려면argument을 호출할 수 있습니다.getallValues() 는 매개변수 값의 List를 반환합니다.
어느 정도에 파라미터 포획기와 파라미터 매칭기는 매우 큰 관련성을 가진다.그것들은 모두 모크 대상 매개 변수의 정확성을 확보하는 데 사용된다.그러나 사용자 정의 매개 변수 매칭기의 중용성이 비교적 낮을 때 매개 변수 포획기를 사용하는 것이 더욱 적합하며 마지막에 매개 변수를 검증하기만 하면 된다.

좋은 웹페이지 즐겨찾기