首先,您的
Service类会在每个请求上创建一个RestTemplate的新实例。我不能足够强调这种不良做法。创建一个类型为RestTemplate的bean并将其注入到您的
Servicebean中(它很可能已经创建-
取决于您使用的Spring MVC版本)。
一旦有了它,那么两个RestTemplates:一个在您的
Servicebean中,另一个在其中注入,
FeatureFlipperManagerTest将是相同的,并且
MockRestServiceServer可以进行测试。
编辑-更明确地说:
将您的
Service班级修改为:
@Componentpublic class Service { private RestTemplate restTemplate; @Autowired public Service(RestTemplate restTemplate) { this.restTemplate = restTemplate; } public boolean isEnabled(String xxx) { ResponseEntity<String> response = restTemplate.getForEntity("someurl",String.class); if(...)return true; return false; }}和您的测试课程:
@RunWith(MockitoJUnitRunner.class)public class FeatureFlipperManagerTest { @Autowired RestTemplate restTemplate; @Autowired Service 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); }}如果此操作失败,并说没有
RestTemplatebean,请粘贴您正在使用的Spring版本信息(Spring Boot?)。



