我已经模拟了 HttpServletRequest,这是我测试中的一项服务:
request = createNiceMock(HttpServletRequest.class);
service = createStrictMock(DataProviderService.class);
我正在通过设置期望来验证我的控制器处理服务引发的异常的行为:
expect(service.getData(someObject)).andThrow(new MyException());
replay(endPoint);
我验证与以下内容相同:
ModelAndView mav = controller.provideDefaultScreen(request);
verify(service);
我的控制器调用服务,如果出现异常,在请求中设置异常详细信息
request.setAttribute("exceptionMessage", e.getMessage());
此行抛出错误:
java.lang.IllegalStateException: missing behavior definition for the preceding method call:
HttpServletRequest.getAttribute("someAttributeCheckedEarlier")
Usage is: expect(a.foo()).andXXX()
我最不关心我的控制器对请求做了什么,我只担心它应该吃掉服务抛出的异常。相应地,我将请求创建为 nick mock。为什么我仍然会收到此错误?