Testování odesílání formulářů
- DefenestrationPraha
- Člen | 127
Snažím se použít Nette Tester pro simulaci odeslání formuláře.
Vytvořím si tedy příslušný prezentér, vložím do něj aplikační request s parametry, ale onSubmit funkce formuláře se nezavolá. Mám za to, že bych správně měl nějakým způsobem submitovat ten formulář. Ale nevím, jak na to.
Žádné příklady jsem nikde nenašel.
form = $this->formFactory->create(...);
$params = array(...);
$request = $this->createApplicationRequest( self::PRESENTER_LOGIN, KnCn::HTTP_METHOD_GET, $params );
$response = $presenter->run($request);
Vrátí se nějaká záhadná 302, která se normálně nevyvolává.
Jak se dívám tady na fóru, tento problém neúspěšně řešilo mnoho lidí, možná by si zasloužil kapitolku v dokumentaci Nette Testeru? Jediná rada, na kterou jsem narazil, je použít Mango Tester, ale ten už neměl 16 měsíců žádné aktualizace, a tak to vypadá, že je mrtvý. Nerad bych pevně spojoval testovatelnost svého projektu s mrtvým nástrojem.
- emololftw
- Člen | 82
- Na začátek doporučuji tuto knihovnu: https://github.com/…enter-tester
je to Mango Tester fork (vyzkoušeno na PHP >= 8.1). Mango fakt doporučuji.
Má metodu
assertFormValid
kde otestuješ validitu formuláře nebo přímoassertFormHasErrors
, kde jako druhý parametr můžeš zadat přímo chybové hlášky. Ostatně víc Ti řekne API. - 302 stavový kód (redirect) je správně, jelikož to je kód výsledku requestu z presenteru, předpokládám, že to není ajaxový požadavek. Zkus např. v tracy odeslat formulář. Po odeslání můžeš vidět jak proběhne redirect na „this“.