我想测试一个REST端点。通过POST请求点击这个端点会上传一个文件到远程git repo。我尝试使用mockMvc测试对这个端点的POST调用(我只想看到一个返回状态“isOk()”)--我不希望这个端点被我的jUnits点击,因为这会导致不必要的文件上传到repo,需要稍后清理。我的问题是,mockMvc正在对端点进行实际的POST调用!哇!我以为这一切都被嘲笑了?!有没有可能让mockMvc返回isOk(),而不对端点进行实际的调用并将文件推送到我的远程存储库?
oxiaedzo1#
Mock MVC只是一个工具,它可以调用标记为@GetMapping、@PostMapping等的方法。控制器中的post方法实际上是您需要测试的方法,它不应该被模仿,这就是为什么您会遇到真实的的端点。我建议你重新构造你的控制器,让post方法只负责向服务发送请求,这样你的控制器就只有一行代码(服务调用),同时你可以模拟服务,这样它就不会碰到真实的的端点。
@GetMapping
@PostMapping
6l7fqoea2#
你也可以使用@MockBean来模拟服务,这样它就不会做任何真实的的调用,希望这对将来遇到同样问题的人有所帮助。
2条答案
按热度按时间oxiaedzo1#
Mock MVC只是一个工具,它可以调用标记为
@GetMapping
、@PostMapping
等的方法。控制器中的post方法实际上是您需要测试的方法,它不应该被模仿,这就是为什么您会遇到真实的的端点。
我建议你重新构造你的控制器,让post方法只负责向服务发送请求,这样你的控制器就只有一行代码(服务调用),同时你可以模拟服务,这样它就不会碰到真实的的端点。
6l7fqoea2#
你也可以使用@MockBean来模拟服务,这样它就不会做任何真实的的调用,希望这对将来遇到同样问题的人有所帮助。