Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Testování php kódu

Pěkný večer. Dělám projekt do jednoho předmětu, který se zabývá testováním. Dostali jsme soubor, kde je třída s jednou metodou a stručný popis, co má metoda dělat. Do tohoto kódu zasahovat nemáme, máme dopsat dvojníky některých dalších tříd, které jsou tam použity (a jejich zdrojáky nebyly dodány) a poté napsat pár testů pomocí PHPUnit. Je to jakoby simulace toho, že programátor dodá testerovi neúplný kód. Zeptal bych se jen na pár obecnějších věcí. Testování pomocí nějakého frameworku a podle nějaké teorie jsem dosud nedělal a chtěl bych se to naučit.

První věc - dopsat ty dvojníky. To myslím chápu, z kontextu kódu vypozorovat, k čemu ty třídy asi slouží a jaké návratové hodnoty se očekávají. Jen nevím co přesně dělá tento kód v php:

$this->assertEquals(SmtpObject::$body, "body");

Konkrétně tato část: SmtpObject::$body
SmtpObject tam není definován, tak ten mám asi dopsat jako dvojníka. A $body je jeho atribut? Tady jsem zmatený, jak mohu přistoupit k atributu třídy, od které nemám instanci?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
jak mohu přistoupit k atributu třídy, od které nemám instanci Zeby static class?
wam_Spider007 29.03.2015 09:02
wam_Spider007
Asi jo díky. Takže to je atribut, který má pevně nastavenou hodnotu a je jedno, jestli pracuji s ins… nový
Niko Bellic 29.03.2015 09:30
Niko Bellic
Co ti brání vytvořit si instanci toho mocku? nový
Wikan 29.03.2015 11:09
Wikan
No asi nic, jen se snažím porozumět tomu, co tam už je napsané. nový
Niko Bellic 29.03.2015 11:34
Niko Bellic
Ta testovaná třída nejspíš nastavuje property body toho SmtpObjectu. A tím assertem ověříš, že to na… nový
Wikan 29.03.2015 11:36
Wikan
Jo, to už dává smysl. Ale musím to teda přepsat, aby to pracovalo s konkrétní instancí třídy SmtpObj… nový
Niko Bellic 29.03.2015 11:48
Niko Bellic
Ne, právě že bys neměl pracovat s konkrétní třídou, ale s jejím mockem. nový
Wikan 29.03.2015 11:49
Wikan
Mock bude ta třída SmtpObject ne? Tu neznám, a musím nějakou vytvořit, aby to fungovalo. nový
Niko Bellic 29.03.2015 11:59
Niko Bellic
No předpokládám, že SmtpObject už je nějaká reálná třída na posílání mailů, takže potřebuješ nějakou… nový
Wikan 29.03.2015 12:01
Wikan
Ano přesně tak. A mock si nemůžu pojmenovat taky SmtpObject? Ať nemusím v testovacím souboru nic mě… nový
Niko Bellic 29.03.2015 12:02
Niko Bellic
To záleží na tom, co myslíš tím pojmenovat. Stejně pojmenovanou třídu bych tam určitě nedával. poslední
Wikan 29.03.2015 12:08
Wikan

Asi jo díky. Takže to je atribut, který má pevně nastavenou hodnotu a je jedno, jestli pracuji s instancí, nebo bez ní, má pořád stejnou hodnotu? Našel jsem, že v instanci takový statický atribut není přístupný.

A property declared as static cannot be accessed with an instantiated class object

language.oop5.static.php
Pak mi trochu uniká smysl toho testu assertEquals. Když má nějaký atribut pořád stejnou hodnotu, je nějaký důvod ho testovat?

Zpět do poradny Odpovědět na původní otázku Nahoru