Как написать тестовый пример Junit для vertx composit future или rxJava - PullRequest
0 голосов
/ 24 февраля 2020

Вот метод, для которого мне нужно написать контрольный пример Junit. Проблема здесь в том, чтобы написать контрольные примеры JUnit для следующего метода, которые возвращают будущее

public Future<SomeResponse> getSomeResponse(SomeQuery someQuery){
    if(dbCircuitBreaker == null){
        dbCircuitBreaker= CircuitBreakers.getDbCircuitBreaker();
    }
    return dbCircuitBreaker.execute(future -> {
        List<SomeResponseMetaData> SomeResponseMetaDataList = new ArrayList<>();
        SomeResponse someResponse = new SomeResponse();
        Observable<Some> someMetaDataObservable = someSQLRepository.findSomeDetails(someQuery);
        someMetaDataObservable.subscribe(some -> {
            getSomeResponse(someResponseMetaDataList,some);
        },throwable -> {
            FIDAL_LOGGER.error(CLASS_FULL_NAME, "getSomeResponse", LogConstants.UNCAUGHT_ERROR, "Could not able to fetch the data from some", throwable);
        },()->{
            FIDAL_LOGGER.info(CLASS_FULL_NAME, "getSomeResponse", LogConstants.UNCAUGHT_ERROR, "fetch the data for some is completed");
            someResponse.setSomeLists(someResponseMetaDataList);
            future.complete(someResponse);
        });
    });
}

1 Ответ

0 голосов
/ 24 февраля 2020

Это не самое лучшее решение, но я написал, что оно отлично работает для меня.

import io.vertx.rxjava.circuitbreaker.CircuitBreaker;
import io.vertx.rxjava.core.Future;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.modules.junit4.PowerMockRunner;
import rx.Single;
import rx.observers.TestSubscriber;

import java.util.ArrayList;
import java.util.List;

@RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.management.*")
public class FileServiceHelperTest {

    @Mock
    SomeServiceHelper someServiceHelper = null;
    @InjectMocks
    CircuitBreaker dbCircuitBreaker = null;
    @InjectMocks
    SomeLineSQLRepository someLineSQLRepository = null;
    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
    }


    @Test
    public void getSomeResponse() {
        SomeResponseMetaData someResponseMetaData = new SomeResponseMetaData();
        someResponseMetaData.setRecievedDate("2020-02-12T03:57:01-0600");
        someResponseMetaData.setFileName("29579_3_Order_File1_20200207050043852");
        someResponseMetaData.setSomeId("43b61ab4-52b8-48e6-9489-b5824d278254");
        someResponseMetaData.setSomeStatus("PROCESSED");
        someResponseMetaData.setSubmitted("3");
        someResponseMetaData.setProcessed("0");
        someResponseMetaData.setPending("0");
        someResponseMetaData.setErrors("3");
        someResponseMetaData.setSomeType("ORDER");
        someResponseMetaData.setShipNodeId("29579_3");
        List<SomeResponseMetaData> someResponseMetaDataList = new ArrayList();
        someResponseMetaDataList.add(someResponseMetaData);
        SomeResponse someResponseExpected = new SomeResponse();
        someResponseExpected.setSomeLists(someResponseMetaDataList);
        Future<SomeResponse> someResponseFuture = Future.succeededFuture(someResponseExpected);
        SomeQuery someQuery = new SomeQuery.SomeQueryBuilder("29579").setPageNo(0).setPageSize(1).build();
        Mockito.when(someServiceHelper.getSomeResponse(someQuery)).thenReturn(someResponseFuture);
        Single<SomeResponse> someResponseSingle = someServiceHelper.getSomeResponse(someQuery).rxSetHandler();
        TestSubscriber<SomeResponse> testSubscriber = new TestSubscriber();
        someResponseSingle.subscribe(testSubscriber);
        testSubscriber.assertCompleted();
        testSubscriber.assertNoErrors();
        testSubscriber.assertValue(someResponseExpected);
    }
}
...