Oscar Romanini
Criador Oscar Romanini 29/07/2022

Olá! Fiquei com algumas dúvidas

No caso do carrinho de compras, senti falta de mais detalhes sobre os mocks utilizando o Laravel. No Laravel usamos no model o FILLABLE ou o GUARDED pra definir os atributos, e não getters e setters.

Por exemplo, criei um serviço ShoppingCartService onde está minha regra de negócio. ao testar o método addProduct($shoppingCart, $product, $quantity), eu preciso passar uma instância de ShoppingCart e Product. E como foi dito, tenho que passar MOCKS, e não um new Product() e um new ShoppingCart();

Qual a melhor forma de "instanciar" esses objetos e DEFINIR seus atributos para teste?

Obrigado!

Manager Carlos Ferreira 29/07/2022

Olá, Oscar!
Tudo bem?

Excelente pergunta.

Você pode criar mock com o package Mockery.

Observe neste exemplo aqui, crio um mock, defino os métodos, e ainda trabalho com spies (->once) para ter certeza que o método foi chamado ou não: https://github.com/devfullcycle/FC3-admin-catalogo-de-videos-php/blob/main/tests/Unit/UseCase/CastMember/CreateCastMemberUseCaseUnitTest.php#L27

Se não entender, me retorna que te explico mais;

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!