Nette/Tester: Assert::throws → parametry callbacku

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
hapi
Člen | 35
+
0
-

Dobrý den,

je možné předat parametry callbacku v Assert::throws($function, $class)?

V této metodě se callback volá pomocí funkce call_user_func, parametry se této metodě ale nijak nepředávají ve stylu call_user_func($callback, $parameter1, $parameter2, ...).

Pokud ale vím, do callbacku není možné parametry zakomponovat? Je to nedostatek Testeru a nebo je to možné nějak řešit a jen nevím jak?

David Matějka
Moderator | 6445
+
0
-

muzes tam dat treba anonymni funkci, ktera zavola tu danou fci s parametama

hapi
Člen | 35
+
0
-

Asi nerozumím, vždyť parametry té funkci se musí předat v místě volání, nebo mi něco nedochází?

$list = new ArrayList();

Assert::throws(
  function($list) {
    $list->addAt(5, 1);
  },
  '\OutOfBoundsException'
);

Zde se vyhodí chyba, že funkce očekývá 1 parametr a nedostala žádný.

Jde o to, že do listu přidávám různé elementy a každé přidání testuji.

Chtěl bych tedy \OutOfBoundsException testovat na stejné instanci, není pro mne nejvhodnější řešení si vytvářet novou instanci v anonymní funkci.

David Matějka
Moderator | 6445
+
+1
-

anonymni fci pouzijes takhle:

$list = new ArrayList();
Assert::throws(
  function() use($list) {
    $list->addAt(5, 1);
  },
  '\OutOfBoundsException'
);
hapi
Člen | 35
+
0
-

Ahaaa, super dik. Anonymni fce jsou pro me v PHP novinkou :) Zvlastni implementace :) Kazdopadne moc dekuju…