Как смоделировать Response response = ClientBuilder.newClient (). Target (некоторый URL-адрес) .request (). Post (Entity.entity (someEntity, MediaType.APPLICATION_JSON))? - PullRequest
0 голосов
/ 14 ноября 2018

Я использую клиент Джерси для отправки запроса и использую Mockito для проведения юнит-теста. Проблема в том, что я не хочу отправлять реальный запрос в тесте. Я пытаюсь издеваться над всем процессом, как этот

when(m_client.target(anyString())).thenReturn(m_webTarget);
when(m_webTarget.request()).thenReturn(m_builder);
when(m_builder.post(Entity.entity(m_Event, MediaType.APPLICATION_JSON))).thenReturn(m_response); 
when(m_response.getStatus())
.thenReturn(Response.Status.BAD_REQUEST.getStatusCode());

Но как издеваться над ClientBuilder?

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете достичь этого, используя powermock .

 @RunWith(PowerMockRunner.class)
    @PrepareForTest(ClientBuilder.class)
    public class YourTestClass{

        //create a mock client here
        Client mockClient = Mockito.mock(Client.class);

        // use powermockito to mock new call

        @Before
        public void setUp() throws Exception {
            PowerMockito.mockStatic(ClientBuilder.class);
            PowerMockito.when(ClientBuilder.newClient()).thenReturn(this.mockClient); 
        //Now you can use mockClient to mock any call using when... then..

        }

        @Test
        public void yourTest() throws Exception {
        } 
    }
...