我使用mickito模拟了一个postForObject resttemplate调用。
Mockito.when(restTemplate.postForObject(Mockito.eq(remoteServerlocation),Mockito.any(Input.class),Mockito.eq(String.class)))。thenReturn(responseString); < / EM>
但在实际代码中,未使用此模拟值并尝试调用远程位置。
String responseString = restTemplate.postForObject(url,input,String.class);
根据我的理解,我完全嘲笑同一个电话。但不行。 对此有任何帮助都会感激不尽。
我正在自动装配包含testcase类中的测试方法的类。这个测试类我使用new创建了restTemplate。
识别TestClass
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Application.class)
public class ActionImplTest {
@Autowired
private ActionImpl recommendation;
RestTemplate restTemplate = new RestTemplate();
@Test
public void performActionTest() throws Exception {
String textInput = "InputText";
Map<String, Object> map = new HashMap<String, Object>();
map.put("convId", "C123");
map.put("reID", 1);
map.put("chID", "Chann_1");
String convID = "1254356671563";
String chId = "2";
String responseString = "Success"
Mockito.when(restTemplate.postForObject(Mockito.eq("remoteServerlocation"), Mockito.any(Input.class), Mockito.eq(String.class))).thenReturn(responseString);
Map<String, Object> response = recommendation.performAction(textInput, map, convID, chId);
}
}
答案 0 :(得分:1)
在测试结束时添加verify
步骤,mockito将为您提供有关预期内容和实际调用内容的一些提示:
Mockito.verify(restTemplate).postForObject(
Mockito.eq(remoteServerlocation), Mockito.any(Input.class), Mockito.eq(String.class));
答案 1 :(得分:1)
以下是我在评论中引用Spring documentation。
的示例@RunWith(SpringRunner.class)
@SpringBootTest
public class ActionImplTest {
@MockBean
private RestTemplate restTemplate;
@Autowired
private ActionImpl recommendation;