Макет RestTemplate getForObject

Имам затруднения с метода Mocking RestTemplate.getForObject. Дефиницията на метода е

public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables) throws RestClientException

Използвам този метод в моя сервизен клас, както следва.

    User user = restTemplate.getForObject("https://api.github.com/users/{username}", 
                User.class, username);

Методът на услугата получава „потребителско име“ като вход, който предавам на метода getForObject.

В моя тестов метод имам шаблон за макетна почивка.

doAnswer(new Answer<User>() {
            @Override
            public User answer(InvocationOnMock invocationOnMock) throws Throwable {
                User user = new User();
                user.setLogin("ghtvnath");
                user.setName("Tharindu Vishwanath");
                return user;
            }
        }).when(restTemplate).getForObject(anyString(),
                eq(User.class), anyString());

Но по някаква причина този макет не работи.


person TV Nath    schedule 03.03.2019    source източник


Отговори (1)


Опитайте да използвате MockRestServiceServer вместо да се подигравате с интерфейса RestTemplate.

private MockRestServiceServer mockServer;

@Before
public void setUp() {
    mockServer = createServer(restTemplate);
}


@Test
public void testSomething(){
        mockServer.expect(anything()).andRespond(withSuccess("{\login\":\"ghtvnath\""}", MediaType.APPLICATION_JSON));


}
person sidgate    schedule 03.03.2019