我添加了一个REST控制器,该控制器使用ControllerAdvice将CompletableFutures返回到项目中,以将异常转换为错误DTO。
我的控制器不会抛出异常,而是将异常包装到失败的CompletableFutures中并返回。
运行完整的应用程序并进行手动测试时,它可以按预期工作,但是在我的测试中,mockMvc不会触发建议,并且始终返回HTTP 2xx。
知道为什么吗?
答案 0 :(得分:0)
如果您具有MockMvc
的独立设置,则需要在创建模拟Mvc实例时指定要使用的控制器建议(如果有),如下所示:
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(controller)
.setControllerAdvice(new YourControllerAdvice())
.build();
这样做的原因是,您在这里没有spring的上下文来检测控制器建议。
答案 1 :(得分:0)
我发现我的测试不正确(或者换句话说。.测试框架的设计不符合我的预期;)
当测试控制器返回CompletableFutures时,需要像下面那样使用asyncDyspatch