SlideShare uma empresa Scribd logo
Criando	mocks com	
phophecy
Júlio de	Lima
@juliodelimas
PHP	Conferece Brasil 2016
PROPHECY É UM	FRAMEWORK	OPEN-SOURCE
CONTRUÍDO	COM	O	INTUITO	DE	FACILITAR	A	
CRIAÇÃO	DE	DUBLÊS	DE	TESTE
DUBLÊS	DE	TESTE	SÃO	OBJETOS	UTILIZADOS
PARA	IMITAR	O	FUNCIONAMENTO	DE
OUTROS	OBJETOS
HÁ MUITAS	VARIAÇÕES	DE	DUBLÊS,	MAS	OS
MAIS	CONHECIDOS	SÃO:
DUMMY																 STUB																				MOCK
Não recebe e	nem
retorna valores
Podem receber valores
e	retorna-los,	mas	não
possuem expectativas
São	Stubs	que	possuem
expectativas sobre si
Esses dublês são utilizados,	em sua maioria,
dentro de	classes	de	teste	de	unidade.	
O	principal	objetivo,	neste caso,	é simular
classes	externas a	qual está sendo testada.
Agora	vamos falar um	pouco sobre testes	de	unidade,
por isso,	pense em como você desenvolveria
o	requisito abaixo?
Pessoa
--------------
float Peso
float Altura
IMC =	Peso	*	Altura	²
IMC	menor	ou	igual	a	17 Muito	abaixo	do	peso
IMC	maior	que	17	e	menor ou	igual	a	18,49 Abaixo	do	peso
IMC	maior	que	18,49	e	menor ou	igual	a	24,99 Peso	Normal
IMC	maior	que	24,99	e	menor ou	igual	a	29,99 Acima	do	Peso
IMC	maior	que	29,99	e	menor ou	igual	a	34,99 Obesidade	I
IMC	maior	que	34,99 e	menor ou	igual	a	39,99 Obesidade	II	(severa)
IMC	maior	que	39,99 Obesidade	III	(mórbida)
Agora	vamos falar um	pouco sobre testes	de	unidade,
por isso,	pense em como você desenvolveria
o	requisito abaixo?
Pessoa
--------------
float Peso
float Altura
IMC =	Peso	*	Altura	²
IMC	menor	ou	igual	a	17 Muito	abaixo	do	peso
IMC	maior	que	17	e	menor ou	igual	a	18,49 Abaixo	do	peso
IMC	maior	que	18,49	e	menor ou	igual	a	24,99 Peso	Normal
IMC	maior	que	24,99	e	menor ou	igual	a	29,99 Acima	do	Peso
IMC	maior	que	29,99	e	menor ou	igual	a	34,99 Obesidade	I
IMC	maior	que	34,99 e	menor ou	igual	a	39,99 Obesidade	II	(severa)
IMC	maior	que	39,99 Obesidade	III	(mórbida)
Quantos	teste	seriam	necessários para	
cobrir todas as	possibilidades?
No	mínimo 4	para	o	cálculo do	IMC
Altura e	Peso	informados,	apenas altura informada,	
apenas peso	informado e	nenhum informado
E	outros	7	para	cada partição da	classificação do	IMC
Sendo um	para	cada uma das	classificações:	
”Muito abaixo do	peso”,	”Abaixo do	peso”,	etc.
Como	estes testes	tratam de	exercitar a	menor
parte	do	código,	são denominados testes	de	unidade.
Lembre-se,	testes	de	unidade são feitos de	forma	isolada,	
ou seja,	os testes	os métodos de	cada classe separadamente
Para	que	isso seja possível,	é necessário que	os conceitos de	
Orientação a	Objetos e	suas características básicas de
baixo acoplamento e	alta coesão sejam utilizados no	
desenvolvimento do	software
Para	automatizar testes	de	unidade no	PHP
utizaremos o	PHPUnit,	um	framework	open-source
muito utilizado pela	comunidade
Assim chegamos ao objetivo do	uso do	Prophecy:
Simular classes	externas dentro dos	testes	de	unidade
que	avaliam nossas classes	e	métodos!
Prophecy	resume-se	a	
Um	profeta,	suas profecias,	
algumas promessas e	predições
Veja um	exemplo
// Instanciando a classe concreta
$pessoa = new Pessoa()
// Usando o Prophecy
$profeta = new ProphecyProphet();
$profecia = $profeta->prophesize('Pessoa');
$profecia->getAltura(Argument::any())->willReturn(1.89);
$pessoa = $profecia->reveal();
Live	Coding!
Confira o	projeto no	repositório abaixo:
https://github.com/juliodelimas/criando-mocks-prophecy
Dúvidas?
Júlio de	Lima
@juliodelimas
PHP	Conferece Brasil 2016

Mais conteúdo relacionado

PDF
Padrões para Desenvolvimento de Software Guiado por Testes
PPTX
Qualidade de Código
PPTX
Testes Unitários
PPTX
TDD no Community Launch 2010 - Christian Cunha
PDF
Feature injection - descobrindo e entregando valor testável
PDF
Brochure i mes icores (co-ritec) - viet
PDF
DevQA: Enfim aprendi à resolver problemas
Padrões para Desenvolvimento de Software Guiado por Testes
Qualidade de Código
Testes Unitários
TDD no Community Launch 2010 - Christian Cunha
Feature injection - descobrindo e entregando valor testável
Brochure i mes icores (co-ritec) - viet
DevQA: Enfim aprendi à resolver problemas

Destaque (14)

PPTX
проект зелена бібліотека
DOCX
El acceso abierto al conocimiento científico
PPSX
Qualidade e Teste de Software - O que preciso saber
PDF
Spivpratsia z gromadamy_umovy_konkursu_4
PPT
Presentation Virtuele Straat
PDF
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
PPTX
aguazulito mi llano lindo
PPTX
Hola a todos
PPTX
PDF
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
PPTX
Presentación1 MÁQUINAS SIMPLES
PPTX
ORCID Overview: Why your Lifelong Identifier is Important in the Digital Age ...
PPTX
Thermography For The Assemssment Of Buildings
PDF
Magnetom Spectra RM 3T -SIEMENS
проект зелена бібліотека
El acceso abierto al conocimiento científico
Qualidade e Teste de Software - O que preciso saber
Spivpratsia z gromadamy_umovy_konkursu_4
Presentation Virtuele Straat
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
aguazulito mi llano lindo
Hola a todos
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
Presentación1 MÁQUINAS SIMPLES
ORCID Overview: Why your Lifelong Identifier is Important in the Digital Age ...
Thermography For The Assemssment Of Buildings
Magnetom Spectra RM 3T -SIEMENS
Anúncio

Mais de Júlio de Lima (20)

PDF
[ATC2021] Distribuição de Testes em Diferentes Camadas
PDF
ALTER FACE Test Heuristic
PDF
[ScrumDay2020] A evolução da responsabilidade em testes
PDF
Reducing the scope of load test analysis (STAREast 2020)
PDF
[TDC2019] Inteligência Artificial e Testes in a Nutshell
PDF
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
PDF
[MoT SP #1] PRISMA para Testes Baseados em Risco
PDF
Mindset de QA em Diferentes Contextos
PDF
[DevelopersBR-2018] Testes de performance usando a nuvem
PPTX
[7Masters Aug, 2018] Escolhas durante automação de testes de API
PDF
[Front in Sampa 2018] Desenvolvendo como QAs
PDF
Mindset do QA em diferentes contextos
PDF
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
PDF
[QANinjaConference] Automação de Testes com Codeception
PDF
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
PDF
[PHPConferenceBR] Automação de testes com Codeception
PDF
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
PDF
Palestra DevOps para Teste de Software
PDF
[TICNOVA2015] Palestra sobre Automação de Testes
PDF
TDC2015: Testes em APIs REST com Rest-Assured
[ATC2021] Distribuição de Testes em Diferentes Camadas
ALTER FACE Test Heuristic
[ScrumDay2020] A evolução da responsabilidade em testes
Reducing the scope of load test analysis (STAREast 2020)
[TDC2019] Inteligência Artificial e Testes in a Nutshell
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
[MoT SP #1] PRISMA para Testes Baseados em Risco
Mindset de QA em Diferentes Contextos
[DevelopersBR-2018] Testes de performance usando a nuvem
[7Masters Aug, 2018] Escolhas durante automação de testes de API
[Front in Sampa 2018] Desenvolvendo como QAs
Mindset do QA em diferentes contextos
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConference] Automação de Testes com Codeception
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[PHPConferenceBR] Automação de testes com Codeception
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
Palestra DevOps para Teste de Software
[TICNOVA2015] Palestra sobre Automação de Testes
TDC2015: Testes em APIs REST com Rest-Assured
Anúncio

Último (19)

PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Apple Pippin Uma breve introdução. - David Glotz
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
COBITxITIL-Entenda as diferença em uso governança TI
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Processos na gestão de transportes, TM100 Col18
Aula04-Academia Heri- Tecnologia Geral 2025
Custos e liquidação no SAP Transportation Management, TM130 Col18
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula 18 - Manipulacao De Arquivos python
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx

[PHPConference 2016] Criando Mocks com Prophecy