Почему Easymock выдает ошибку для nicemock? - PullRequest
0 голосов
/ 22 марта 2012

Я отключил 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()

Меня меньше всего беспокоит то, что мой контроллер делает с запросом, меня беспокоит только то, что он должен съесть исключение, выданное службой.Соответственно, я создал запрос как ник mock.Почему я все еще получаю эту ошибку?

Ответы [ 2 ]

3 голосов
/ 29 марта 2012

Если вы не вырезали его из своих фрагментов кода, вы, похоже, не вызывали replay в NiceMock. Это выведет его из режима «запись» и сделает его пригодным для использования.

0 голосов
/ 31 марта 2012

Помимо приведенного выше ответа, рассматривали ли вы вопрос об использовании Spring Mock ?Он имеет хорошую поддержку для моделирования и предоставляет множество классов, которые не требуют использования easymock по крайней мере для поддержки тестирования вне веб-контейнера.

Эта платформа может использоваться независимо от Spring, и ваше приложение не нуждается в использованииSpring Framework.Вот хорошая статья тоже ...

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...