Я сейчас применяю тесты в своем приложении, но я не хочу, чтобы оно заполняло мою базу данных, я искал способы использования другой базы данных, но не нашел простого способа сделать это. Но я нашел BDDMockito, который помогает мне контролировать то, что произойдет, когда я вызываю мой jpaRepository.
Я пытался использовать BDDMockito с методом .doNothing, но, кажется, невозможно использовать с jpaRepository.save (), это мой код:
public void postColaborador(String sobreNome, String rg, String cpf, String orgaoExpedidor, String nomePai, String nomeMae,
LocalDate dataNascimento, String estadoCivil, String tipoCasamento, PessoaFisica conjuge,
String profissao, String matricula, String nome, String escopo, Endereco endereco, String secretaria,
String idCriador) throws JsonProcessingException {
Colaborador colaborador = new Colaborador(sobreNome, rg, cpf, orgaoExpedidor, nomePai, nomeMae, dataNascimento,
estadoCivil, tipoCasamento, conjuge, profissao, matricula);
colaborador.setNome(nome);
colaborador.setEscopo(escopo);
colaborador.setEndereco(endereco);
BDDMockito.doNothing().when(colaboradorRepository).save(colaborador); //this should make jpa do nothing when I call method save
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:" + port + "/api/colaborador/cadastrar")
.queryParam("colaborador", objectMapper.writeValueAsString(colaborador))
.queryParam("setor", secretaria)
.queryParam("idCriador", idCriador);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<String> response = testRestTemplate.exchange(
builder.build().encode().toUri(),
HttpMethod.POST,
entity,
String.class);
Assertions.assertEquals(HttpStatus.OK, response.getStatusCode());
}
Когда я выполняю тест, я получаю эту ошибку:
org.mockito.exceptions.base.MockitoException: Only void methods can doNothing()! Example of correct use of doNothing():
doNothing().
doThrow(new RuntimeException())
.when(mock).someVoidMethod(); Above means: someVoidMethod() does nothing the 1st time but throws an exception the 2nd time is called
Я вижу, что сохранение не является пустым методом, но я не знаю, что Я могу сделать, если не перезаписать все мои сохранения моих репозиториев.