#java #unit-testing #junit #mockito #resttemplate
#java #модульное тестирование #junit #mockito #resttemplate
Вопрос:
У меня возникли трудности с издевательством над методом 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);
Метод Service получает «username» в качестве входных данных, которые я передаю методу getForObject.
В моем методе тестирования у меня есть макет шаблона Rest.
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());
Но по какой-то причине этот макет не работает.
Ответ №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));
}