17
Criando mocks com phophecy Júlio de Lima @juliodelimas PHP Conferece Brasil 2016

[PHPConference 2016] Criando Mocks com Prophecy

Embed Size (px)

Citation preview

Page 1: [PHPConference 2016] Criando Mocks com Prophecy

Criandomocks comphophecy

Júlio deLima@juliodelimas

PHPConferece Brasil 2016

Page 2: [PHPConference 2016] Criando Mocks com Prophecy

PROPHECY É UMFRAMEWORKOPEN-SOURCECONTRUÍDOCOMOINTUITODEFACILITARA

CRIAÇÃODEDUBLÊSDETESTE

Page 3: [PHPConference 2016] Criando Mocks com Prophecy

DUBLÊSDETESTESÃOOBJETOSUTILIZADOSPARAIMITAROFUNCIONAMENTODE

OUTROSOBJETOS

Page 4: [PHPConference 2016] Criando Mocks com Prophecy

HÁ MUITASVARIAÇÕESDEDUBLÊS,MASOSMAISCONHECIDOSSÃO:

DUMMY STUBMOCKNão recebe enemretorna valores

Podem receber valoreseretorna-los,masnãopossuem expectativas

SãoStubsquepossuemexpectativas sobre si

Page 5: [PHPConference 2016] Criando Mocks com Prophecy

Esses dublês são utilizados,em sua maioria,dentro declassesdetestedeunidade.Oprincipalobjetivo,neste caso,é simularclassesexternas aqual está sendo testada.

Page 6: [PHPConference 2016] Criando Mocks com Prophecy

Agoravamos falar umpouco sobre testesdeunidade,por isso,pense em como você desenvolveria

orequisito abaixo?

Pessoa--------------float Pesofloat Altura

IMC =Peso*Altura²

IMCmenorouiguala17 Muitoabaixodopeso

IMCmaiorque17emenor ouiguala18,49 Abaixodopeso

IMCmaiorque18,49emenor ouiguala24,99 PesoNormal

IMCmaiorque24,99emenor ouiguala29,99 AcimadoPeso

IMCmaiorque29,99emenor ouiguala34,99 ObesidadeI

IMCmaiorque34,99 emenor ouiguala39,99 ObesidadeII(severa)

IMCmaiorque39,99 ObesidadeIII(mórbida)

Page 7: [PHPConference 2016] Criando Mocks com Prophecy

Agoravamos falar umpouco sobre testesdeunidade,por isso,pense em como você desenvolveria

orequisito abaixo?

Pessoa--------------float Pesofloat Altura

IMC =Peso*Altura²

IMCmenorouiguala17 Muitoabaixodopeso

IMCmaiorque17emenor ouiguala18,49 Abaixodopeso

IMCmaiorque18,49emenor ouiguala24,99 PesoNormal

IMCmaiorque24,99emenor ouiguala29,99 AcimadoPeso

IMCmaiorque29,99emenor ouiguala34,99 ObesidadeI

IMCmaiorque34,99 emenor ouiguala39,99 ObesidadeII(severa)

IMCmaiorque39,99 ObesidadeIII(mórbida)

Quantostesteseriamnecessários paracobrir todas aspossibilidades?

Page 8: [PHPConference 2016] Criando Mocks com Prophecy

Nomínimo 4paraocálculo doIMCAltura ePesoinformados,apenas altura informada,

apenas pesoinformado enenhum informado

Page 9: [PHPConference 2016] Criando Mocks com Prophecy

Eoutros7paracada partição daclassificação doIMCSendo umparacada uma dasclassificações:”Muito abaixo dopeso”,”Abaixo dopeso”,etc.

Page 10: [PHPConference 2016] Criando Mocks com Prophecy

Comoestes testestratam deexercitar amenorpartedocódigo,são denominados testesdeunidade.

Lembre-se,testesdeunidade são feitos deformaisolada,ou seja,os testesos métodos decada classe separadamente

Page 11: [PHPConference 2016] Criando Mocks com Prophecy

Paraqueisso seja possível,é necessário queos conceitos deOrientação aObjetos esuas características básicas debaixo acoplamento ealta coesão sejam utilizados no

desenvolvimento dosoftware

Page 12: [PHPConference 2016] Criando Mocks com Prophecy

Paraautomatizar testesdeunidade noPHPutizaremos oPHPUnit,umframeworkopen-source

muito utilizado pelacomunidade

Page 13: [PHPConference 2016] Criando Mocks com Prophecy

Assim chegamos ao objetivo douso doProphecy:Simular classesexternas dentro dostestesdeunidade

queavaliam nossas classesemétodos!

Page 14: [PHPConference 2016] Criando Mocks com Prophecy

Prophecyresume-seaUmprofeta,suas profecias,

algumas promessas epredições

Page 15: [PHPConference 2016] Criando Mocks com Prophecy

Veja umexemplo

// Instanciando a classe concreta$pessoa = new Pessoa()

// Usando o Prophecy$profeta = new \Prophecy\Prophet(); $profecia = $profeta->prophesize('Pessoa'); $profecia->getAltura(Argument::any())->willReturn(1.89); $pessoa = $profecia->reveal();

Page 16: [PHPConference 2016] Criando Mocks com Prophecy

LiveCoding!Confira oprojeto norepositório abaixo:

https://github.com/juliodelimas/criando-mocks-prophecy

Page 17: [PHPConference 2016] Criando Mocks com Prophecy

Dúvidas?

Júlio deLima@juliodelimas

PHPConferece Brasil 2016