我在模拟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());
但是由于某种原因,该模拟无法正常工作。
答案 0 :(得分:0)
尝试使用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));
}