Testovani presenteru – Komponenta uz ma rodice
- Blujacker
- Člen | 89
Ahoj,
snazim se testovat presentery, ale jakmile mam v TestCase vice jak jednu
metodu test, spadne mi to na chybe
exception 'Nette\InvalidStateException' with message 'Component 'XXXX' already has a parent.'
.
Presenter ale pro kazdy test vytvarim novy (teda myslim). V metode
setUp
volam:
$presenterFactory = $this->container->getByType('\Nette\Application\IPresenterFactory');
$presenter = $presenterFactory->createPresenter($name);
Nicmene tohle vypada na to, ze instance komponenty XXXX se vytvori pouze jednou (pri prvnim testu) a pak uz se nevytvari. Da se nejak docilit toho, aby se komponenty automaticky vytvarely pro kazdy test take nove? Nebo jak resite tento problem Vy?
Dekuji!
- Blujacker
- Člen | 89
Pres konstruktor si ji injectnu a pak si to latte samo vytvori pres createComponentXXXX. Nicmene tahle komponenta byla navrzena tak, ze bude pouzita jenom jednou (takze se negeneruje pres tovarnu) a vzdy tedy existuje pouze jedna instance.
A tim jsem si asi rovnou odpovedel, musi se to predelat na tovarnicku, tak aby pri kazdem injectnuti do presenteru vytvorila nova instance. Prislo mi zbytecne pouzivat tovarnu na veci, ktere se jiste pouziji pouze jednou a tim jsem si asi docela zavaril, mam takhle udelanych asi 20 komponent :)
Dekuji za nakopnuti!