Testando Insert
No método insert do ProductService, na primeira linha ele já tem o método validateData, passando o DTO. Portanto, já temos um teste de insert com dois cenários, com data válida e inválida.
Data inválida seria: nome vazio, preço nulo ou menor que zero.
Masss, temos um problema. O método validateData está dentro do ProductService, e como ele é protected só pode ser usado por quem está dentro do pacote. Como fazer para simular o seu comportamento? Nós usaremos o Spy, veja abaixo:
InsertWithValidData
@Test
public void InsertShouldReturnProductDTOWhenValidData() {
//criando uma variável do tipo ProductService com o Spy,
// espionando o service lá de cima com @InjectMocks
ProductService serviceSpy = Mockito.spy(productService);
//é um doNothing porque nesse caso, é um caso de sucesso
Mockito.doNothing().when(serviceSpy).validateData(productDTO);
//instanciando o resultando, fazendo a ação
ProductDTO result = serviceSpy.insert(productDTO);
//verificações
Assertions.assertNotNull(result);
Assertions.assertEquals(result.getName(), "Playstation");
}InsertWithInvalidData (name e price)
Name
Price
Atualizado