programing

Mockito Matcher 및 원시 요소 배열

copysource 2023. 1. 24. 10:04
반응형

Mockito Matcher 및 원시 요소 배열

모키토와 함께라면verify()과의 메서드 콜.byte[]근데 어떻게 써야 할지 모르겠어요.

 myMethod( byte[] )

난 그냥 이런걸 원해anyByteArray()어떻게 모키토와 함께 그것을 할 수 있을까요?

노력하겠습니다.any(byte[].class)

이것을 시험해 보세요.

AdditionalMatchers.aryEq(array);

나는 차라리 그것을 사용하고 싶습니다.Matchers.<byte[]>any()이건 나한테 효과가 있었어.

나는 무타노스와 알레시오에 동의한다.또, 가능한 한 많은 같은 메서드 콜을 체크할 수 있습니다(제품 코드의 후속 콜을 검증하는 경우는, 검증의 순서는 문제가 되지 않습니다).코드는 다음과 같습니다.

import static org.mockito.AdditionalMatchers.*;

    verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
    verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));

나는 사용했다Matchers.refEq이걸 위해서.

인수가 배열인 경우에도 Mockito.any()를 사용할 수 있습니다.이렇게 썼어요.

verify(myMock, times(0)).setContents(any(), any());

커스텀 매처는 언제든지 작성할 수 있습니다.argThat

Mockito.verify(yourMockHere).methodCallToBeVerifiedOnYourMockHere(ArgumentMatchers.argThat(new ArgumentMatcher<Object>() {
    @Override
    public boolean matches(Object argument) {
        YourTypeHere[] yourArray = (YourTypeHere[]) argument;
        // Do whatever you like, here is an example:
        if (!yourArray[0].getStringValue().equals("first_arr_val")) {
            return false;
        }
        return true;
    }
}));

제가 제일 잘했던 건org.mockito.ArgumentMatchers.isA

예를 들어 다음과 같습니다.

isA(long[].class)

잘 작동한다.

서로 구현의 차이는 다음과 같습니다.

public static <T> T any(Class<T> type) {
    reportMatcher(new VarArgAware(type, "<any " + type.getCanonicalName() + ">"));
    return Primitives.defaultValue(type);
}

public static <T> T isA(Class<T> type) {
    reportMatcher(new InstanceOf(type));
    return Primitives.defaultValue(type);
}

언급URL : https://stackoverflow.com/questions/10066590/mockito-matcher-and-array-of-primitives

반응형