4. První test public functiontestRenderDefault() { $presenter= newHomepagePresenter; $request= newPresenterRequest('Front:Homepage', 'GET', array('lang' => 'cs')); $response = $presenter->run($request); $this->assertType('NettepplicationenderResponse', $response); }
5. Parametry Parametry action/render metod Persistentní parametry public functionrenderDefault($id) { } array('id' => 'foo') /** @var persistent */ public $category; array('category' => 'foo')
6. Parametry Volaný signál Volaná akce public functionhandleVote($answer) { } array('do' => 'vote', 'answer' => 'foo') public functionrenderEdit($id) { } array('action' => 'edit', 'id' => 'foo')
7. RenderResponse Nejčastější Pro ověření funkčnosti IMHO úplně stačí „Detailisté“ mohou kontrolovat naplněné proměnné v šabloně: $presenter->run($request); $this->assertType('NettepplicationenderResponse', $response); $this->assertEquals('bar',$presenter->template->foo);
11. Signály public functiontestHandleFoo() { $presenter= newHomepagePresenter; $request= newPresenterRequest('Front:Homepage', 'GET', array('do'=>'foo')); $response = $presenter->run($request); $this->assertType('NettepplicationedirectingResponse', $response); // + kontrola, jestli se stalo to, co jsme chtěli }
12. Formuláře public functiontestSubmitFooForm() { $presenter= newHomepagePresenter; $request= newPresenterRequest('Front:Homepage', 'POST', array('do'=>'fooForm-submit'), $values); $response = $presenter->run($request); $this->assertType('NettepplicationedirectingResponse', $response); // + kontrola, jestli se stalo to, co jsme chtěli }
13. Formuláře – při chybě Výjimky nám bohužel zachytí submithandler formuláře public functiontestSubmitFooForm() { $presenter= newHomepagePresenter; $request= newPresenterRequest('Front:Homepage', 'POST', array('do'=>'fooForm-submit'), $values); $presenter->run($request); $this->assertEquals('Chyba!', $presenter['fooForm']->errors[0]) }
14. Formuláře – při chybě Výjimky nám bohužel zachytí submithandlerformuláře Ale mohl bych to v případě testování zrušitv BaseFormu! /**@expectedExceptionIOException*/ public functiontestSubmitFooForm() { $presenter= newHomepagePresenter; $request= newPresenterRequest('Front:Homepage', 'POST', array('do'=>'fooForm-submit'), $values); $presenter->run($request); }
15. Čeho se vyvarovat Přímého volání action/render/handle/submit metod a testování jejich chování Takový test neodpovídá reálnému spuštěnív provozu Bez kontextu životního cyklu presenterubynemusely fungovat