Testování odesílání formulářů

DefenestrationPraha
Člen | 22
+
0
-

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 | 56
+
0
-
  1. 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římo assertFormHasErrors, kde jako druhý parametr můžeš zadat přímo chybové hlášky. Ostatně víc Ti řekne API.
  2. 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“.