Я пытаюсь издеваться следующим метод:Борясь с модульным тестированием и насмешливым
public void add(Question question) {
String username = authenticationManager.getUsername();
Candidate candidate = userService.getByUsername(username);
if (!authenticationManager.hasPermission("ROLE_ADMIN")) {
question.setStatus(QuestionStatus.WAITING);
}
question.setCandidate(candidate);
questionRepository.add(question);
}
Это моя попытка:
@Test
public void add_savesQuestionWithStatusWaiting_whenSubmittedAsUser() {
Candidate candidate = new Candidate();
Question question = mock(Question.class);
when(authenticationManager.getUsername()).thenReturn("andreas");
when(userService.getByUsername("andreas")).thenReturn(candidate);
when(authenticationManager.hasPermission("ROLE_ADMIN")).thenReturn(true);
questionService.add(question);
verify(question, times(0)).setStatus(any(QuestionStatus.class));
}
, что я пытаюсь сделать, это проверить логику приложения. Когда пользователь не имеет ROLE_ADMIN, статус вопроса будет установлен в ожидании. Я делаю насмешливое право?
Каков ваш результат теста? – Luke
@ Luke Я ищу ответ, говорящий, что это правильный способ сделать это или неправильный способ сделать это. Я не уверен, правильно понял. Тест проходит, хотя. – LuckyLuke
вы также можете подтвердить (вопрос) .setCandidate (кандидат); verifyNoMoreInteractions (вопрос); – hoaz