Nin*_*ina 5 java junit spring unit-testing spring-mvc
我正在尝试 JUnit 测试 Spring @RestController 的异常处理。
@RestController
public class MyController {
Run Code Online (Sandbox Code Playgroud)
异常处理在类 ErrorHandler 中完成。
@ControllerAdvice
public class ErrorHandler extends ResponseEntityExceptionHandler {
Run Code Online (Sandbox Code Playgroud)
我正在使用 Mockito,因为它非常方便。但是现在我无法弄清楚如何使 ErrorHandler 与 RestController 一起工作。
@RunWith(MockitoJUnitRunner.class)
public class MyControllerTest {
@InjectMocks
private MyController controller;
@Mock
private MyService myService;
@Spy
private ErrorHandler errorHandler;
Run Code Online (Sandbox Code Playgroud)
如您所见,我尝试使用 @Spy 使“真正的” ErrorHandler 与注入了模拟的控制器一起工作。
但它不是这样工作的。
@Test
public void testDoWork_InternalServiceException() {
MyRequest request = getDefaultRequest();
Mockito.when(myService.check(request)).thenThrow(new RuntimeException());
ResponseEntity<StatusResponse> response = controller.doWork(request);
}
Run Code Online (Sandbox Code Playgroud)
如果我调用控制器的方法,它现在当然会抛出异常并且永远不会调用 ErrorHandler 类。
有没有办法使用 Mockito 测试 @RestController 类和其他 @ControllerAdvice 异常处理程序类的异常处理?
非常感谢您的建议。
| 归档时间: |
|
| 查看次数: |
1418 次 |
| 最近记录: |