### Question:
Carrinho { public void adicionar(Produto produto) { this.produto = produto; } Carrinho(Estoque estoque, Pagamento pagamento); void adicionar(Produto produto); void comprar(); boolean estaVazio();  }### Answer:
@Test @DisplayName("Nao deve esvaziar o estoque quando tiver erro no pagamento") public void naoDeveTerPorqueNaoPagou() { Produto produto = new Produto("Banana"); Mockito.when(estoque.temProdutos(produto)).thenReturn(true); Mockito.when(pagamento.pagar(produto)) .thenThrow(new PagamentoException("houve um error no pagamento")); carrinho.adicionar(produto); PagamentoException pagamentoException = assertThrows(PagamentoException.class, carrinho::comprar); Mockito.verify(estoque, Mockito.never()).reduzirProdutos(produto); }