SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
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

Destaque

проект зелена бібліотека
проект зелена бібліотекапроект зелена бібліотека
проект зелена бібліотека
Olena Bashun
 
Spivpratsia z gromadamy_umovy_konkursu_4
Spivpratsia z gromadamy_umovy_konkursu_4Spivpratsia z gromadamy_umovy_konkursu_4
Spivpratsia z gromadamy_umovy_konkursu_4
Library Franko
 
Thermography For The Assemssment Of Buildings
Thermography For The Assemssment Of BuildingsThermography For The Assemssment Of Buildings
Thermography For The Assemssment Of Buildings
bobberry8
 

Destaque (14)

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

Mais de Júlio de Lima

Mais de Júlio de Lima (20)

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

Último

Último (9)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

[PHPConference 2016] Criando Mocks com Prophecy