junit 如何在没有mockMvc进行实际发布的情况下测试发布到端点的内容?

xvw2m8pv  于 2022-12-13  发布在  其他
关注(0)|答案(2)|浏览(114)

我想测试一个REST端点。通过POST请求点击这个端点会上传一个文件到远程git repo。我尝试使用mockMvc测试对这个端点的POST调用(我只想看到一个返回状态“isOk()”)--我不希望这个端点被我的jUnits点击,因为这会导致不必要的文件上传到repo,需要稍后清理。
我的问题是,mockMvc正在对端点进行实际的POST调用!哇!我以为这一切都被嘲笑了?!有没有可能让mockMvc返回isOk(),而不对端点进行实际的调用并将文件推送到我的远程存储库?

oxiaedzo

oxiaedzo1#

Mock MVC只是一个工具,它可以调用标记为@GetMapping@PostMapping等的方法。
控制器中的post方法实际上是您需要测试的方法,它不应该被模仿,这就是为什么您会遇到真实的的端点。
我建议你重新构造你的控制器,让post方法只负责向服务发送请求,这样你的控制器就只有一行代码(服务调用),同时你可以模拟服务,这样它就不会碰到真实的的端点。

6l7fqoea

6l7fqoea2#

你也可以使用@MockBean来模拟服务,这样它就不会做任何真实的的调用,希望这对将来遇到同样问题的人有所帮助。

相关问题