是否可以使用 MockMvc 并仅模拟我的服务使用的 RestTemplate?



我正在尝试使用 MockMvc 构建一个集成测试,我只想模拟 MyService.java 使用的 RestTemplate。如果我取消注释MyIT.java上的代码,这个测试将失败,因为MockMvc使用的RestTemplate也会被嘲笑。

我的休息.java

@RestController
public class MyRest {
@Autowired
private MyService myService;
@RequestMapping(value = "go", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<String> go() throws IOException {
myService.go();
return new ResponseEntity<>("", HttpStatus.OK);
}
}

我的服务.java

@Service
public class MyService {
@Autowired
private RestTemplate restTemplate;
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
public void go() {
restTemplate.getForObject("http://md5.jsontest.com/?text=a", String.class);
}
}

我的.java

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@AutoConfigureMockMvc
//@RestClientTest(MyService.class)
public class MyIT {
@Autowired
private MockMvc mockMvc;
//    @Autowired
//    private MockRestServiceServer mockRestServiceServer;
@Test
public void shouldGo() throws Exception {
//    mockRestServiceServer.expect(requestTo("http://md5.jsontest.com/?text=a"))
//              .andRespond(withSuccess());
mockMvc.perform(get("/go")).andExpect(status().isOk());
}
}
  1. 首先,你应该@Autowired你的RestTemplate豆进行测试 .class。
  2. 然后使用 restTemplate 创建MockRestServiceServer,而不是 自动接线。

也许试试这个:

@Autowired
private RestTemplate restTemplate;
private MockRestServiceServer mockRestServiceServer;
@Before
public void setup() {
mockRestServiceServer= MockRestServiceServer.createServer(restTemplate);
}

相关内容

  • 没有找到相关文章

最新更新