【发布时间】:2017-02-23 07:42:44
【问题描述】:
@RunWith(MockitoJUnitRunner.class)
public class FeatureFlipperManagerTest {
@Autowired
RestTemplate restTemplate = new RestTemplate();
@Autowired
Service service = new Service();
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
@Test
public void test() throws Exception {
mockServer.expect(requestTo(Mockito.anyString()))
.andRespond(withSuccess("{\"enabled\":true}", MediaType.APPLICATION_JSON));
boolean res = service.isEnabled("xxx");
mockServer.verify();
Assert.assertEquals(true, res);
}
}
我有 MockRestServiceServer 在服务中模拟 restTemplete。但它总是失败。它显示错误为java.lang.AssertionError: Further request(s) expected
0 out of 1 were executed。任何人都可以让我知道我哪里做得不对。
服务本身将如下所示:
public class Service{
public boolean isEnabled(String xxx) {
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.getForEntity("someurl",String.class);
if(...)return true;
return false;
}
}
【问题讨论】:
-
问题是您正在模拟的
RestTemplate没有作为依赖项传递给Service。您在isEnabled方法中创建了一个new RestTemplate(),它不能被这样模拟。 -
另外,您可能打算使用
anyThing()而不是requestTo(Mockito.anyString()),这只会期望一个空字符串作为URL,失败。
标签: java spring mockito resttemplate mockrestserviceserver