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