PHP com Testes e TDD
Pré-requisitos
- Conhecimentos gerais sobre a linguagem PHP e PHP Orientado a Objetos
- Conhecer os processos básicos sobre banco de dados e relacionamentos
O curso
Neste curso você aprenderá a trazer mais solidez ao seus códigos PHP utilizando testes em suas aplicações, mostraremos neste curso a utilização de testes unitários e funcionais usando o framework PHPUnit. O PHPunit é o framework mais famoso para testes existente hoje na comunidade PHP, e foi criado por Sebastian Bergmann.
Conheceremos ainda a filosofia/metodologia TDD, Test Driven Development, onde aprenderemos a criar nossos códigos baseados/guiados pela criação dos testes antes mesmo da implementação do código real existir de fato. Este metodologia envolve alguns passos e conceitos e veremos isso durante a aplicação de nossas teorias.
O mundo dos testes envolve diversos conceitos e dentre eles veremos ainda Mocks, Stubs e muito mais, melhorando assim nossa base para a aplicação dos conceitos na prática
Prática
Para praticarmos separei três projetos práticos onde os conceitos se aplicam de forma bem interessante, abrindo ainda mais o leque de possibilidades.
Aplicaremos testes na criação de um componente de Rotas, onde criaremos um participante que gerenciará o recebimento das requisições e carregará os responsáveis por responder por aquele acesso.
Criaremos com base nos testes, um componente para nos auxiliar nos CRUDs de nossas aplicações, conhecendo conceitos envolvidos nos testes com a utilização de banco de dados.
E por fim aplicaremos os conceitos testando uma mini API REST, onde mostrarei o workflow que utilizo para testar os retornos e chamadas aos endpoints de uma API.
Com esses três projetos conseguirei mostrar as diversas formas de aplicação de testes em projetos no mundo PHP.
Jornada Percorrida ao Objetivo
- 01 - Introdução 0:02:36
- 02 - Quem Sou Eu? 0:03:09
- 03 - Ambiente & Links Importantes 0:04:47
- 04 - Introdução a Testes 0:06:10
- 05 - Iniciando Aplicação 0:03:46
- 06 - Configurnado Ambiente com PHPunit 0:06:17
- 07 - Executando Primeiros Testes 0:09:47
- 08 - Concluindo Primeiro Teste 0:10:00
- 09 - O que é TDD? 0:03:51
- 10 - Iniciando Testes com TDD 0:06:27
- 11 - Incrementando Carrinho de Compras com TDD 0:07:55
- 12 - Concluindo Carrinho de Compras com TDD 0:09:35
- 13 - Considerações Finais Módulo 0:03:55
- 14 - Introdução Módulo 0:01:24
- 15 - Métodos setUp & tearDown 0:08:45
- 16 - setUpBeforeClass & tearDownAfterClass 0:03:52
- 17 - AssertPreConditions & AssertPostCondition 0:04:10
- 18 - Marcando testes como incompletos & pulando testes 0:08:01
- 19 - PHPUnit Annotations 0:09:16
- 20 - Concluindo Módulo 0:03:39
- 21 - Introdução a Mocks & Stubs 0:03:18
- 22 - Falando sobre Stubs 0:08:14
- 23 - Criando Mock Objects (Objetos Falsos) 0:13:13
- 24 - Concluindo Mock 0:04:22
- 25 - Conclusões Módulo 0:05:45
- 26 - Organizando Ambiente para o Componente 0:06:38
- 27 - Iniciando QueryBuilder 0:05:32
- 28 - Iniciando Testes da Classe Select 0:10:40
- 29 - Implementando Primeira Query Select 0:06:03
- 30 - Adicionando Condições em Nossa Query Select 0:10:17
- 31 - Adicionando a Possibilidade de Mais Condições Where 0:12:29
- 32 - OrderBy em Nosso Select 0:05:26
- 33 - Limit em Nosso Select 0:04:05
- 34 - Joins em Nosso Select 0:10:29
- 35 - Selecionando Colunas Desejadas em Nosso Select 0:06:50
- 36 - Criando Insert Query 0:15:20
- 37 - Criando Update Query pt1 0:10:36
- 38 - Criando Update Query pt2 0:05:14
- 39 - Criando Delete Query 0:06:13
- 40 - Melhorias no Select Query / Concluindo 0:13:34
- 41 - Intro 0:05:33
- 42 - Modificações no QueryBuilder 0:04:44
- 43 - Iniciando Testes Classe de Execução de Query 0:06:04
- 44 - Definindo Interface de Execução de Queries 0:06:21
- 45 - Testando Inserção de Dados 0:06:37
- 46 - Concluindo Teste de Inserção de Dados 0:10:43
- 47 - Teste de Recuperação de Dados 0:15:36
- 48 - Teste de Atualização de Dados 0:10:18
- 49 - Teste de Remoção de Dados 0:03:13
- 50 - Concluindo Módulo 0:05:32
- 51 - Intro Componente 0:02:31
- 52 - Iniciando Router por meio dos Testes 0:09:14
- 53 - Testando Router com o Minimo 0:05:01
- 54 - Lógica Inicial do Router 0:07:37
- 55 - Validando Rota Acessada 0:04:15
- 56 - Manipulando Controllers em nosso Router 0:06:26
- 57 - Resolução de Controllers no Router 0:08:15
- 58 - Validando Chamada Errada de Controller 0:05:00
- 59 - Validando a Não Existência do Método no Controller 0:05:01
- 60 - Rodando Testes & Aplicando Melhorias Router 0:05:40
- 61 - Iniciando Parâmetros Dinâmicos nas Rotas 0:13:20
- 62 - Mapeando Parâmetros Dinâmicos 0:11:21
- 63 - Mapeando Parâmetros Dinâmicos pt.2 0:11:49
- 64 - Extraindo Parâmetro da Rota 0:11:13
- 65 - Prefixo para Nossas Rotas 0:09:00
- 66 - Concluindo Componente 0:06:46
- 67 - Iniciando Publicação 0:04:07
- 68 - Registrando Pacote no Packagist 0:06:54
- 69 - Testando Pacote Publicado 0:04:38
- 70 - Conclusões 0:04:16
- 71 - Não posso esquecer! 0:02:49
- 72 - Corrigindo Teste Total Carrinho 0:13:40
- 73 - Corrigindo Parâmetros Dinâmicos Router 0:10:02
Terei suporte?
Grupo Exclusivo
no Discord
Beleza mas Quem É Você, Nanderson?
Me chamo Nanderson Castro e atuo a mais de dez anos no mercado de desenvolvimento Web com PHP, e sou especializado na criação de aplicações para Web usando os principais frameworks do mercado, ou melhor, os dois mais expoentes frameworks do mercado PHP: Symfony e Laravel.
Sou também, Zend Certified PHP Engineer desde 2015, uma certificação que atesta os conhecimentos na linguagem PHP e certificação esta, com reconhecimento mundial.
Hoje atuo como instrutor da Code Experts, uma Escola Online com Foco em Prática, onde levamos pessoas aspirantes no mundo Web ao domínio das ferramentas com foco na mudança de vida deste aluno em suas metas alcançadas com os conhecimentos agregados. Hoje são mais de 20 mil alunos que estudam conosco em nossa plataforma e em plataforma de terceiros como a Udemy, onde temos um bom nível de indicações e satisfação por parte de nossos alunos.