Nette\Tester privátní metody
- David Matějka
- Moderator | 6445
v nette\tester to otestujes stejne jako jinde – nijak :) testovat by se
melo verejne API.
pokud vsak na tom trvas, tak se bez reflexe neobejdes (nebo runkit, ale na ten
bych nesahal uz vubec)
- llook
- Člen | 407
My používáme tuhle knihovnu na zpřístupňování private/protected členů: https://github.com/PetrP/Access
Obecně ale jinak souhlas s matej21em, testy by měly pokrývat funkce veřejného rozhranní. Jestli ty veřejné metody pro svoji činnost volají další private/protected členy, to je jejich vnitřní uspořádání a po tom testům nic není. Pokud by ty další metody byly natolik komplexní, že by dávalo smysl je otestovat samy o sobě, tak asi patří vyčlenit a zpřístupnit.
- grogy
- Člen | 147
Díky za rady.
Teoreticky to celkově chápu, ovšem prakticky se v testech teprve cvičím. Nicméně jsem prošel celý kód, který potřebuji testovat a rozčlenil jsem jej do menších tříd. Ty nyní jdou otestovat velice pohodlně.
@llook díky za tip na knihovnu. Možná někdy použiji. Snad ale nebude třeba :)
- David Grudl
- Nette Core | 8218
V PHP 5.4:
Tester\Helpers::with($obj, function() {
Assert::same( 123, $this->privateProperty );
});
- Filip Procházka
- Moderator | 4668
@grogy udělal jsi úplně to nejlepší co jsi mohl, velká pochvala! Privátní členy tříd se prostě netestují.