para o teste • Exercise ◦ Simulamos o comportamento que esperamos testar • Verify ◦ Verificamos se ele teve o resultado esperado • Teardown ◦ Fazemos o ambiente voltar ao normal, como se o teste nunca tivesse acontecido 15
= new Address(); $addressRepository = new AddressRepository($em->reveal()); $addressRepository->save($address); $em->flush()->shouldHaveBeenCalled(); }
usar o princípio da inversão de dependências do SOLID :D public function create() { $validator = new Validator(); if (!$validator->isCPFValid($this->data['cpf']) { throw new \Exception('Invalid CPF'); } return $this->repository->create(); }
mensagens entre os objetos • Ao invés de testar as classes concretas diretamente • Evitando efeitos colaterais no mundo exterior ◦ Envio de e-mail ◦ Dados salvos em cache 43
instanciado • Quando um objeto causa efeitos no mundo exterior (ex: enviar e-mail) • Quando quero verificar o garantir o comportamento de um colaborador 44