Nette\Tester: Spouštění testů v prohlížeči
- nanuqcz
- Člen | 822
Ahoj,
jakým způsobem lze spouštět testy v prohlížeči? Jde mi o to, abych mohl
v průběhu testování používat i debug bar laděnky apod.
Například testo test:
Assert::equal(1, "1");
Assert::true( FALSE );
Assert::true( TRUE );
Debugger::barDump( $a = array(1, 2, 3) );
by mi měl do prohlížeče vypsat shrnutí, že dva asserty proběhly v pořádku, jeden failnul. A měl by se mi zobrazit debug bar s obsahem proměnné $a.
Díky moc, nemůžu na to přijít.
Editoval nanuqcz (3. 4. 2014 13:43)
- Milo
- Nette Core | 1283
Pro detekci, jestli je test spuštěn Testerem anebo ne, slouží proměnná
prostředí Environment::RUNNER
a pro zpracování chybných
asercí Assert::$onFailure
. Takže to nějak zkombinovat.
if (getenv(Tester\Environment::RUNNER)) {
Tracy\Debugger::enable();
# Tímto se AssertException nevyhodí, ale máš ji tady k dalšímu zpracování
Tester\Assert::$onFailure = function(Tester\AssertException $e) {
...
}
} else {
Tester\Environment::setup();
}
Nevím, k čemu je dobré zjisti počet úspěšných asercí. Teď to
snadno nepůjde. Podle mě je síla ve vyhození výjimky a proklikání
se skrz ní v laděnce. Ale neznám Tvůj use-case.
Editoval Milo (3. 4. 2014 17:18)
- David Grudl
- Nette Core | 8218
Počet assertů je v Tester\Assert::$counter
a počet chybných
spočítáš v obsluze Tester\Assert::$onFailure
.
- nanuqcz
- Člen | 822
Moc díky, tohle už mi funguje :-)
include 'libs/Nette/nette.phar';
include 'libs/Tester/bootstrap.php';
use Nette\Diagnostics\Debugger;
Debugger::enable(Debugger::DEVELOPMENT);
$GLOBALS['_tester']['failCount'] = 0;
Tester\Assert::$onFailure = function($e) {
$trace = $e->getTrace();
echo $e->getMessage() . "\n in " . $trace[1]['file'] . "\n\n";
$GLOBALS['_tester']['failCount']++;
};
// Run tests
echo '<pre>';
$files = Nette\Utils\Finder::findFiles('*.phpt')->in('tests');
foreach ($files as $filePath => $file) {
include "$filePath";
}
echo "\n\nTests finished, " . Tester\Assert::$counter . " asserts, " . $GLOBALS['_tester']['failCount'] . " failed.";
Kromě neznalosti Assert::$counter
a
Assert::$onFailure
jsem měl problém hlavně v tom, že jsem
první volal Debugger::enable()
, a až pak includoval
Tester/bootstrap.php. Což nefungovalo :-)