我是 mockito 的新手,需要一些帮助,可能是一些关于如何模拟 Rest Template 的 getForEntity 和 postForEntity 方法的示例。下面是我想通过模拟 getForEntity 方法为其编写 Junit 测试用例的代码。
SomeService.java
class SomeService
{
//some private, static, final data members
public Map getService(String sNo, String uId, String en)
{
ResponseEntity <Map> response = new
RestTemplate().getForEntity("https://someurl.com/someService",
Map.class);
Map body = response.getBody();
//do something
HttpEntity<?> request = new HttpEntity <>(payLoad, headers);
//payload is Hash Map and headers is a LinkedMultiValueMap
ResponseEntity <Map> response = new RestTemplate().postForEntity(url,
request, headers);
return response.getBody();
}
}
我尝试用@Mock 和@InjectMocks 做一些事情。
TestSomeService.java
@RunWith(MockitoJunitRunner.class)
class TestSomeService
{
@Mock
RestTemplate restTemplate;
@InjectMocks
SomeService ser;
/*Some data members*/
@Before
{
HttpEntity <?> request = new HttpEntity<>(reqPayload, headers);
Mockito.when(restTemplate.getForEntity("theUrl",
Map.class)).thenReturn(new ResponseEntity <Map>(someMap,
HttpStatus.OK));
Mockito.when(restTemplate.postForEntity("anotherUrl", request,
Map.class)).thenReturn(new ResponseEntity <Map>(expectedMap,
HttpStatus.OK));
}
@Test
public void testGetService()
{
Map <String, Object> result = ser.getService("123", "abc", "QA");
}
}
慕的地6264312
当年话下
哆啦的时光机
12345678_0001
呼唤远方
相关分类