Я работаю над написанием тестовых примеров для остальных контроллеров при загрузке Spring.
Чтобы дать некоторое представление о проблеме, я не могу смоделировать исключение, которое было сгенерировано из службы на уровне контроллера.
Я использую PowerMokito для написания тестовых случаев.
@RunWith(PowerMockRunner.class)
@PrepareForTest(UserApiController.class)
public class UserApiControllerTest {
/* private MockMvc mockMvc;*/
@Mock
GenericService genericService;
@Mock
UserService userService;
@Mock
UserRoleService userRoleService;
@Mock
MessageService messageService;
@Mock
CurrentUserService currentUserService;
@Mock
UserRepository userRepository;
@Mock
UserRoleRepository userRoleRepository;
@InjectMocks
UserApiController userApiController;
@Before
public void setup() {
// this must be called for the @Mock annotations above to be processed
MockitoAnnotations.initMocks(this);
//Set up mocking for repository methods
}
@Test(expected = DuplicateUserEmailException.class)
public void saveUserByEmailFailure() throws Exception {
HashMap mockUser = new HashMap<String,Object>();
mockUser.put("email","test_dy1@gmail.com");
String user = new ObjectMapper().writeValueAsString(mockUser);
doThrow(new DuplicateUserEmailException()).
when(userService).saveUserByEmailId(any());
userApiController.saveUserByEmailId(user);
}
Пожалуйста, найдите детали контроллера ниже.
@RequestMapping(value = "/save_user_by_email", method = RequestMethod.POST)
public String saveUserByEmailId(@RequestParam("user") String user) throws Exception {
ObjectMapper mapper = new ObjectMapper();
HashMap<String, Object> userJson = new HashMap<String, Object>();
userJson = mapper.readValue(user, new TypeReference<Map<String, Object>>(){});
JsonObjectBuilder responseBuilder = Json.createObjectBuilder();
try {
userService.saveUserByEmailId(userJson);
responseBuilder.add("success", true).add("code", genericService.getSuccessCode()).add("message",
userJson.containsKey("id") ? messageService.getMessage("message.success.update")
: messageService.getMessage("message.success.create"));
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
if(exception instanceof DuplicateUserEmailException)
throw new DuplicateUserEmailException();
}
return responseBuilder.build().toString();
}