2. ABOUT MEABOUT ME
DANIELE D'ANGELIDANIELE D'ANGELI
@DANGELIDANIELE@DANGELIDANIELE
HTTP://DANIELEDANGELI.COMHTTP://DANIELEDANGELI.COM
BORN AND RAISED IN ROMEBORN AND RAISED IN ROME
2 YEARS IN LONDON2 YEARS IN LONDON
ACTUALLY I'M WORKING WITHACTUALLY I'M WORKING WITH
@ADESPRESSO, IN ROME WITH@ADESPRESSO, IN ROME WITH
3. ... FROM A PREVIOUS... FROM A PREVIOUS
PRESENTATION OFPRESENTATION OF
MINEMINE
35. ... FROM MARTIN FOWLER... FROM MARTIN FOWLER
HTTP://MARTINFOWLER.COM/BLIKI/INTEGRATIOHTTP://MARTINFOWLER.COM/BLIKI/INTEGRATIO
NCONTRACTTEST.HTMLNCONTRACTTEST.HTML
36. Remember!
TESTTEST DOUBLEDOUBLE IS A GENERIC TERM FORIS A GENERIC TERM FOR
ANY CASE WHERE YOU REPLACE AANY CASE WHERE YOU REPLACE A
PRODUCTION OBJECT FOR TESTINGPRODUCTION OBJECT FOR TESTING
PURPOSES.PURPOSES.
... FROM MARTIN FOWLER... FROM MARTIN FOWLER
37. ... FROM MARTIN FOWLER... FROM MARTIN FOWLER
RUN YOUR CONSUMER TESTS AGAINSTRUN YOUR CONSUMER TESTS AGAINST
A TESTA TEST DOUBLEDOUBLE
49. FOREACH CONTRACTFOREACH CONTRACT
1. SET UP WORKING STATESET UP WORKING STATE
(DATABASE AND EXTERNAL(DATABASE AND EXTERNAL
DEPENDENCIES)DEPENDENCIES)
PROVIDERPROVIDER
LOAD CONTRACTSLOAD CONTRACTS
50. 1. SET UP WORKING STATESET UP WORKING STATE
(DATABASE AND EXTERNAL(DATABASE AND EXTERNAL
DEPENDENCIES)DEPENDENCIES)
2. MAKE INTERNAL HTTP CALLMAKE INTERNAL HTTP CALL
(BASED ON CONTRACT)(BASED ON CONTRACT)
LOAD CONTRACTSLOAD CONTRACTS
FOREACH CONTRACTFOREACH CONTRACT
PROVIDERPROVIDER
51. 1. SET UP WORKING STATESET UP WORKING STATE
(DATABASE AND EXTERNAL(DATABASE AND EXTERNAL
DEPENDENCIES)DEPENDENCIES)
2. MAKE INTERNAL HTTP CALLMAKE INTERNAL HTTP CALL
(BASED ON CONTRACT)(BASED ON CONTRACT)
3. VERIFY RESPONSEVERIFY RESPONSE
FOREACH CONTRACTFOREACH CONTRACT
LOAD CONTRACTSLOAD CONTRACTS
PROVIDERPROVIDER
55. OOPS! SOME ERRORS COULDOOPS! SOME ERRORS COULD
OCCURS...OCCURS...
LET ME TRY LIVELET ME TRY LIVE
CODING...CODING...
56. PACT-PHP [PROVIDER]PACT-PHP [PROVIDER]
PARSE CONTRACTSPARSE CONTRACTS
LOAD STATELOAD STATE
PARSE AND CREATEPARSE AND CREATE
PSR7PSR7 REQUESTREQUEST
PROVIDER APIPROVIDER API
CREATECREATE
PSR7PSR7 RESPONSERESPONSE
VERIFY EXPECTEDVERIFY EXPECTED
PSR7PSR7 RESPONSERESPONSE
57. PACT-PHP [PROVIDER]PACT-PHP [PROVIDER]
/**
* @param Closure $makeRequest How make a ps7Request
* @param Closure $setUp Setup the test state
* @param Closure $tearDown Setup up back the state
*/
public function honorContracts(
Closure $makeRequest,
Closure $setUp,
Closure $tearDown
)
FRAMEWORK INDEPENDENTFRAMEWORK INDEPENDENT