Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Codeceptionでテストをしよう
Takashi Nojima
May 21, 2016
Technology
0
1.2k
Codeceptionでテストをしよう
PHPカンファレンス福岡2016 LT
http://php-tips.com/2016/05/21/phpconfuk2016-lt-codeception/
Takashi Nojima
May 21, 2016
Tweet
Share
More Decks by Takashi Nojima
See All by Takashi Nojima
nojimage
0
59
nojimage
0
110
nojimage
3
620
nojimage
3
1.9k
Other Decks in Technology
See All in Technology
nkjzm
1
870
ocise
0
170
hirosys
0
150
layerx
1
980
sylk
0
250
adarapata
2
200
i35_267
0
270
hmatsu47
0
170
ocise
0
190
soracom
0
100
redhatopenshift
0
630
muras
0
120
Featured
See All Featured
jnunemaker
PRO
40
4.6k
lemiorhan
627
43k
cromwellryan
101
5.9k
chrislema
173
14k
morganepeng
17
1.1k
lara
172
9.5k
philhawksworth
190
17k
ddemaree
274
31k
brettharned
93
3k
jonrohan
1021
380k
marktimemedia
6
340
shpigford
368
42k
Transcript
Codeception! Ͱςετ͠Α͏ .BZ 1)1ΧϯϑΝϨϯεԬ
About Me ໊લɿౡོʢͷ͡·͔ͨ͠ʣ ॴଐɿΠϥεςΟοΫίϯαϧλϯπגࣜձࣾ w CMPHIUUQQIQUJQTDPN w 5XJUUFS!OPKJNBHF
͢͜ͱ w $PEFDFQUJPOͷ֓ཁ w σϞ w $FQUWT$FTU w ͓קΊϞδϡʔϧ
Codeception ͱ
Codeception ͱ wड͚ೖΕςετ "DDFQUBODF5FTU wػೳςετ 'VODUJPOBM5FTU w୯ମςετ 6OJU5FTU
Λ·ͱΊͯॲཧͰ͖ΔςεςΟϯάϑϨʔϜϫʔΫ
Codeception ͱ w ެࣜαΠτ IUUQDPEFDFQUJPODPN w ຊޠυΩϡϝϯτ IUUQQJDDBHMJBOJHJUIVCJP$PEFDFQUJPOEPDTKB@+1
Codeception ͷ͍͍ͱ͜Ζ 8FC%SJWFSʹΑΔ+BWB4DSJQUͷڍಈΛؚΊͨςετΛ 1)1Ͱॻ͚Δ ‣ ςετࣦഊ࣌ʹɺ)5.-εΫϦʔϯγϣοτΛͯ͘͠ΕΔ ‣ 8FC%SJWFSʹ4FMFOJVNͷଞɺ1IBOUPN+4 8FC,JUϕʔεͷϔο υϨεϒϥβ
ར༻Մೳ
‣ -BSBWFM -VNFO ‣ 1IBMDPO ‣ 4JMFY ‣ 4ZNGPOZ ‣
:JJ ‣ ;FOE'SBNFXPSL ˞$BLF1)1ผ్Ϟδϡʔϧ ՃͰରԠՄೳ ֤छϑϨʔϜϫʔΫΛඪ४αϙʔτ Codeception ͷ͍͍ͱ͜Ζ
Codeception ͷ͍͍ͱ͜Ζ ‣ 3&45"1*ͷςετ༻Ϟδϡʔϧ͕͋Δ ‣ +40/ͰΛฦ͢"1*ͷςετ͕؆୯ʹॻ͚Δ
ςετ Λॻ͍ͯΈΔ
͜Μͳͷ w πΠολʔͰʮQIQDPOGVLʯΛݕࡧ w ݕࡧ݁Ռʹʮ1)1ΧϯϑΝϨϯε࠷ߴʂʯ͕ ؚ·Ε͍ͯΕ0,
ςετίʔυ <?php ! $I = new AcceptanceTester($scenario); $I->wantTo('πΠολʔͰ #phpconfuk ΛݕࡧͰ͖Δ');
! $I->amOnPage('/'); $I->comment('ݕࡧϑΟʔϧυΛ։͍ͯೖྗ'); $I->click('ݕࡧ'); ! $I->waitForElementVisible('#search-query'); $I->fillField('#search-query', '#phpconfuk'); $I->click('.StreamsTopBar-searchButton'); $I->wait(3); ! $I->expect('ݕࡧϖʔδ͕։͍͍ͯΔ'); $I->seeCurrentUrlMatches('~^/search~'); $I->seeInTitle('#phpconfuk'); ! $I->expect('݁Ռʹ"1)1ΧϯϑΝϨϯε࠷ߴʂ"ΛؚΜͰ͍Δ'); $I->see('PHPΧϯϑΝϨϯε࠷ߴʂ', '#timeline');
σϞ
Cept vs Cest
Cept <?php ! $I = new AcceptanceTester($scenario); $I->wantTo('log in as
regular user'); ! $I->amOnPage('/login'); $I->fillField('Username','davert'); $I->fillField('Password','qwerty'); $I->click('Login'); ! $I->see('Hello, davert');
Cest <?php ! class LoginCest { ! public function _before(AcceptanceTester
$I) { } ! public function _after(AcceptanceTester $I) { } ! public function tryToTest(AcceptanceTester $I) { $I->wantTo('log in as regular user'); ! $I->amOnPage('/login'); $I->fillField('Username', 'davert'); $I->fillField('Password', 'qwerty'); $I->click('Login'); ! $I->see('Hello, davert'); } }
Cept vs Cest $FTUͳΒ ‣ @CFGPSF @BGUFS ϝιουͰڞ௨ͷલॲཧʗ ޙॲཧ͕هड़Մೳ ‣
ΞϊςʔγϣϯͰςετέʔεͷάϧʔϓԽґ ଘؔΛهड़Մೳ
͓קΊϞδϡʔϧ
͓קΊϞδϡʔϧ w TJUFQIBOUPNBO w KBLPDIQIBOUPNKTJOTUBMMFS w DBQUCBSJUPOFNBJMDBUDIFSDPEFDFQUJPONPEVMF w NBJMDBUDIFSμϛʔ4.51αʔόΛ্ཱͪ͛ΕΔHFN
ϚϧνόΠτͷରԠ ෦ͰTVCTUSͷϚϧνόΠτະରԠͷؔΛ ༻͍ͯ͠Δ ‣ ςετͷϝιου໊ϝοηʔδʹϚϧνόΠ τจࣈΛ༻ͨ͠߹දࣔಈ࡞่͕ΕΔ
IDEͷରԠ w /FU#FBOT͔ΒରԠ w 1)14UPSNϓϥάΠϯͰରԠ w IUUQTHJUIVCDPNUJHFSTFPDPEFDFQUJPOQIQTUPSN DPNNBOEMJOFUPPM
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠