SDK MasterPass Merchant Server - запрос токена Junit

Я внедрил Masterpass SDK в один из моих проектов для оформления заказа. API используется для получения токена запроса путем передачи CallBackUrl и OrginURL. API успешно реализован и работает должным образом.

Проблема: у меня возникла проблема с созданием тестовых примеров junit с использованием Mockito.

Код:

public void invokeService(AuthTokenRequestBean requestBean) throws Exception {
        retrieveAuthTokenService = new RetrieveAuthTokenService(requestBean);
        when(processorFactory.createService(eq(RetrieveAuthTokenService.class),
                                              any(AuthTokenRequestBean.class))).
            thenReturn(retrieveAuthTokenService);
        Mockito.when(retrieveAuthTokenService.getOutput()).thenReturn(response);
        Mockito.when(retrieveAuthTokenService.process(any(FlowCtx.class))).thenReturn(response);
    }

Исключение:

rg.mockito.exceptions.misusing.MissingMethodInvocationException:

when () требует аргумента, который должен быть «вызовом метода в макете». Например: когда (mock.getArticles ()). ThenReturn (статьи);

Кроме того, эта ошибка может появиться, потому что: 1. вы используете один из методов: final / private / equals () / hashCode (). Эти методы не могут быть заглушены / проверены. Методы имитации, объявленные для закрытых родительских классов, не поддерживаются. 2. внутри метода when () вы вызываете метод не для имитации, а для какого-то другого объекта.

Нужна помощь, если кто-то работает над этими apis для издевательства с использованием junit. Есть ли другой фреймворк, который можно использовать для имитации.


person Maneesh Tripathi    schedule 12.07.2017    source источник


Ответы (1)


Мы можем имитировать реализацию MasterPass SDK с помощью PowerMockito. Так как This содержит статические методы и может быть смоделирован с помощью PowerMockito.

Фрагмент кода ниже ..

@Mock private ProcessorFactory processorXXXX;

public void setupAndXXXProcessor (AuthTokenRequestXXXX requestBean) выдает исключение {retrieveAuthTokenProcessor = new RetrieveAuthXXXXXX (requestBean); PowerMockito.when (processorXXXX.createProcessor (eq (RetrieveAuthXXXXXX.class), любой (AuthTokenRequestXXXX.class))) .thenReturn (retrieveAuthTokenProcessor); PowerMockito.mockStatic (RequestTokenApi.class); PowerMockito.when (RequestTokenApi.create (anyString ())). ThenReturn ("createRequestTokenResponse"); PowerMockito.mockStatic (ShoppingCartApi.class); PowerMockito.when (ShoppingCartApi.create (любой (ShoppingCartRequest.class))) .thenReturn (createShoppingCartResponse ()); PowerMockito.mockStatic (MerchantInitializationApi.class); PowerMockito.when (MerchantInitializationApi.create (любой (MerchantInitializationRequest.class))) .thenReturn ("createMerchantInitializationResponse");

}

person Maneesh Tripathi    schedule 28.07.2017