Simulando comportamento

Agora, precisamos simular o comportamento do repository (do save e do getReferenceById), que estão sendo usados dentro dos métodos do ProductService.

Para fazer isso, fazemos aquele setUp, montando os possíveis cenários, igual no estudo passado.

Para simular esses cenários, precisamos olhar o comportamento dos métodos.

O insert, por exemplo, utiliza o save, faremos o seguinte:

  1. Instanciaremos um Product e um ProductDTO (fora e depois dentro do setUp)

  2. Criaremos o cenário, usando o any e retornando um Product (afinal, é o que acontece no Service, ele retorna uma entity), veja:

    Cenário para o método insert

O método update, por exemplo, usa o getReferenceByid(). Além disso, temos um try, caso o ID não exista, irá retornar uma exception.

Fazemos o teste de cenário com ID existente e um com não existente (criando um nonExistingId), igual no outro estudo.

Finalizamos o teste de comportamento do Repository e agora, vamos pros métodos em sí utilizando @Spy.

Atualizado