[MÚSICA] [MÚSICA] Olá a todos,
estamos de volta aqui, continuando o nosso hands on.
Temos teste falhando aqui que utiliza mock object.
O que para quem faz TDD é sempre uma boa notícia ter teste falhando, principalmente
se for teste que você não implementou ainda, porque já sabe o que tem que fazer.
Então, a gente tem aqui o carrinho de compras, inserimos o mock,
que tem que receber essa notificação quando o produto é adicionado.
Então, a gente implementou aqui o mock, né, e quando é chamado esse
produto adicionado ele guarda, e depois compara esses valores.
Então vamos lá no nosso carrinho de compra, né,
e vamos guardar aqui, implementar aqui essa lógica.
Então o que é que eu preciso fazer?
Eu vou guardar aqui esse observador, então,
eu vou criar aqui uma variável para ele, está?
E aqui no momento que eu adicionar,
eu vou fazer o observador receber, ou melhor,
olha o erro aí acontecendo, this ponto observador,
que ele pega lá, pegando aqui este observador.
Excelente, então eu guardei já e o que eu
preciso fazer agora é quando eu adicionar o produto,
eu vou vir aqui, no observador e vou notificar,
né, que o produto foi adicionado.
Então, no lugar do nome eu vou pegar o p ponto get nome,
e no lugar de valor eu vou pegar o p ponto get valor, certo?
Então, acho que é isso, vamos ver,
vamos rodar o teste aqui para ver se está funcionando.
Opa, Null Pointer Exception?
Aqui dá para ver que, só que olha lá,
ele deu pau no teste anterior,
porque aqui ele não tem observador, então, ele está dando null.
Aí, olha a importância de rodar também os testes antigos, né?
Então aqui, eu vou fazer if, ele só vai fazer isso aqui se o observador for
diferente de nulo.
Então, será que funciona agora?
Rodo aqui, passou.
Então vamos seguir aqui com os nossos testes,
a gente não quer poder adicionar observador só,
mas a gente quer poder adicionar vários, então,
eu vou vir aqui e escuta Adição de Produto,
então eu vou colocar aqui adicionar 2 observadores,
adicionar DoisObservadores, está?
Então esse cara aqui eu vou chamar de mock 1, certo?
E eu vou criar aqui mock 2 então,
eu vou dar Ctrl C aqui,
vou chamar aqui, vou criar outro observador que eu vou chamar de mock
2 [SEM_ÁUDIO]
e adiciono os 2 e aí na hora de verificar aqui se o produto realmente foi recebido,
eu tenho que verificar se os 2 estão recebendo esse produto.
Então vamos lá.
Mock 1, Mock 2, tome cuidado com os Ctrl C e Ctrl V para não deixar nada para trás.
Então eu vou rodar aqui, eu salvo, nesse caso eu nem precisei mexer no meu Mock,
o meu mock já está criado, aquele mock que eu criei lá,
ele é suficiente para esse teste aqui.
Então eu vou rodar, então ele está dando problema porque
o meu mock 1 não está recebendo.
Observa que como a verificação é igual, você fala assim,
como ele está esperando o tênis mas está sendo Null.
Mas onde isso?
Você pode clicar aqui e ver que foi no mock 1.
Então, vamos para, né,
tiramos o nosso chapéu vermelho e vamos colocar
o nosso chapeuzinho verde e vamos lá no carrinho de compras arrumar isso daí.
Bom, a gente percebe que o observador não dá mais para ser mais uma classe,
objeto ali individual, que ele tem que ser uma lista.
Então, a gente vai transformar aqui o observador numa
lista de observador carrinho, vamos chamar aqui de observadores,
vamos inicializar essa lista, né,
com Array List, [SEM_ÁUDIO]
aqui ao invés de simplesmente atribuir para a variável,
vamos adicionar observadores ponto adiciona,
né, esse observador, e aqui,
ao invés de ele verificar se o observador é null,
eu vou trocar aqui por for né, observador carrinho,
que vai pegar todos os, será que ele vai dar problema ali,
aquele problema, já que eu estou tirando a verificação de null?
Não sei, vamos ver o que é que o teste fala para a gente.
Então vamos salvar, vamos rodar aqui o teste, opa, funcionou!
Então, aquilo que eu fiz ali, a princípio estava correto, está?
E aí, acabou os teste?
Bom, vou criar aqui uma situação que é o seguinte: imagine que desses observadores,
ele jogue uma exceção.
Então, eu quero que os próximos observadores continuem sendo adicionados.
Será que eu consigo fazer isso com os mocks?
Como é que eu tenho que fazer?
Eu modifico o meu mock?
Como é que eu faço?
Então, eu vou encerrar aqui essa parte do video e vou deixar para a próxima,
tente dar uma pensada aí, como é que a gente faria esse teste e
continuamos aí o nosso hands on de TDD no próximo video.
Continue assistindo.
[MÚSICA]