Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Nette Tester / Posobota
Search
Filip Procházka
April 28, 2013
Technology
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nette Tester / Posobota
Filip Procházka
April 28, 2013
More Decks by Filip Procházka
See All by Filip Procházka
Evolving architecture
fprochazka
0
250
Value objects in PHP
fprochazka
1
240
Jak psát testy na REST API
fprochazka
0
130
V gitu se nic neztratí
fprochazka
0
420
Co se PHP programátor může naučit od Javy?
fprochazka
1
150
4 roky remote
fprochazka
1
94
Před čím tě Nette ani Symfony neochrání
fprochazka
0
160
Nejlepší cache je žádná cache
fprochazka
0
140
Doctrine: co dělat, když entity nestačí
fprochazka
0
89
Other Decks in Technology
See All in Technology
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
960
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
350
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
1.6k
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
150
AI de Idea
kawaguti
PRO
2
120
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
300
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
180
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
730
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
110
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
150
データ_AIの事業の勝敗をわけるもの
nek0128
0
380
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Abbi's Birthday
coloredviolet
4
10k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
570
Done Done
chrislema
186
16k
GitHub's CSS Performance
jonrohan
1033
470k
Ruling the World: When Life Gets Gamed
codingconduct
0
330
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Transcript
Nette/Tester Filip Procházka @HosipLan
None
Proč PHPUnit ne?
Kdyby/Framework Doctrine Events Console Redis Facebook Replicator
Příliš mnoho abstrakce
Špatně se rozšiřuje
Statika
Proč Nette/Tester?
Každý test je php script - snadné debuggování - otestujete
neotestovatelné - fatal errory - http hlavičky - sušenky
Vždy paralelní - každý test ve vlastním vlákně - maximální
izolace testů - lze spouštet XY testů zároveň - je možné je zámkem serializovat
Minimalistické api - Připomíná PHPUnit - TestCase::testExpectation() - @dataProvider -
TestCase ale není povinný - Assert::true($result)
Napsal ho Davídek ;)
Jak začít?
Instalace composer.json "require-dev": { "nette/tester": "@dev" } $ composer update
--dev
První test tests/Kdyby/example.phpt <?php // Hello World! if (2*2 !==
4) exit(1);
Zkusíme spustit $ php . /vendor/nette/tester/T ester/tester.php -j30 ./tests/
None
tests/bootstrap.php <?php include __DIR__ . '/../vendor/autoload.php'; Tester\Helpers::setup(); class_alias('Tester\Assert', 'Assert'); date_default_timezone_set('Europe/Prague');
define('TEMP_DIR', __DIR__ . '/tmp/' . getmypid()); Tester\Helpers::purge(TEMP_DIR);
github.com/nette/sandbox github.com/nette/nette Více na:
Asserty <?php require __DIR__ . '/../bootstrap.php'; Assert::true(2*2 === 4); Assert::same("a",
"a"); Assert::null(NULL);
Asserty <?php Assert::throws(function () { throw new Exception("Hello"); }, 'Exception',
"Hello");
Asserty <?php Assert::match( "%a% %d%.%d%", "Nette 2.0" );
Metadata <?php /** * Test: Nette\Diagnostics\Debugger * eval error in
HTML. * * @author David Grudl * @package Nette\Diagnostics * @assertCode 500 */
TestCase <?php class ComputationTest extends Tester\TestCase { public function testMath()
{ Assert::true(2*2 === 4); } } (new ComputationTest())->run();
TestCase <?php class ComputationTest extends Tester\TestCase { protected function setUp(){}
protected function tearDown(){}
TestCase <?php class ComputationTest extends Tester\TestCase { function dataString(){ return
[["a", "a"], ["b", "b"]]; } /** @dataProvider dataString */ function testString($a, $b) {}
DomQuery <?php $dom = Tester\DomQuery::fromHtml($html); Assert::true( $dom->has('input[name="username"]') ); Assert::true( $dom->has('input[name="password"]')
);
Code Coverage <?php // tests/bootstrap.php if (extension_loaded('xdebug')) { xdebug_disable(); Tester\CodeCoverage\Collector::start(
__DIR__ . '/coverage.dat' ); }
Code Coverage $ php ./vendor/nette/tester/ Tester/coverage-report.php -c tests/Kdyby/coverage.dat -s ./src/Kdyby/Redis/
-t "Kdyby/Redis"
None
Spouštění z IDE - testy jsou obyčejné php scripty -
right click and run - right click and debug - test runner je obyčejný script - right click and run
None
Nevýhody... - integrace do nástrojů? - někdy málo info ve
zprávách assertů - "array(2) is not equal to array(2)" - nemá výchozí mockovací nástroj - github.com/janmarek/mockista - chybí podpora Selenia - proužek s výsledkem nemění barvu :(
Dotazy?