Blog | Aktuální vývoj v Mockistovi

Aktuální vývoj v Mockistovi

Pořád pracuji na Mockistovi 2. Mám pro vás pár aktuálních novinek.

Mockista je balíček pro packagist

Ti z vás, kdo ho používáte, máte instalaci zase o něco jednodušší. Mockista v tuto chvíli nemá žádné závislosti. Přemýšlím ale, že bych v něm začal používat Googyho.

Mockista už projde typehintingem

$mock = Mockista\mock("Trida nebo Interface");
$this->assertInstanceOf("Trida nebo Interface", $mock);

Díky tomu můžete mockistu používat i tam, kde se vyžaduje nějaká konkrétní instance. Předchozí funkcionalita:

$mock = Mockista\mock(array("x"=>1, "y"=>function() {return time(); }));
$mock->freeze();
$mock->x; // 1
Je nyní volitelně na 2. parametru, pokud použijete type hinting, jinak zůstává na prvním:
$mock = Mockista\mock("Trida nebo Interface", array("x"=>1, "y"=>function() {return time(); }));
$mock->freeze();
$mock->x; // 1

Opravil jsem chyby

  • pokud při učení byl parametr metody objekt a ten se změnil, mockista nefungoval dobře. OPRAVENO
  • mockista generuje prázný konstruktor, čímž už se nezobrazují chybové hlášky, pokud byly nějaké parametry vyžadované. OPRAVENO
  • Mockista vynechá final metody. OPRAVENO
  • Mockista vyhodí výjimku při pokusu mockovat finální třídu. OPRAVENO
  • Mockista nebyl kompatibilní s Nette\Object a nešlo tedy mockovat objekty z Nette. OPRAVENO

V tuto chvíli nejsou žádné nahlášené chyby. Pokud nějakou chybu naleznete, prosím, hlaste ji do Issues.

Mockování statických metod

V privátním branchi vyvíjím možnost mockovat i statické metody.

Rozhraní zatím plánuju asi takto:

$mock = Mockista\mock("Trida nebo Interface");
$mock::x()->once->andReturn(1);
$mock->freeze();
$mock::x(); // 1

Partial Mock

Promýšlím funkcionalitu partial mocku. O co jde?

Mockista dostane reálný objekt. Sám simuluje chování jen tam, kde je chování definováno. Všude jinde se předává volání původnímu objektu.

Zatím to mám rozmyšlené asi takto:

class Obj
{
        function x() {return 1;}
        function y() {return time();}
}
$obj = new Obj;
$mock = Mockista\mock($obj);
$mock->y()->andReturn(123321123);
$mock->freeze();
$mock->x(); // 1
$mock->y(); // 123321123

Z partial mocků se později vyvinou i slibované Spy objekty.

Čekám i na vaše tipy

Jak Mockistu používáte? Pokud ho nepoužíváte, proč? Je něco, co vám na něm chybí nebo překáží?

Programování

Předejte zkušenosti i dalším a sdílejte tento článek!

Následující článek


Jiří Knesl
Business & IT konzultant

Jiří Knesl poprvé začal programovat v roce 1993. Od té doby, díky skvělým učitelům a později zákazníkům, měl možnost neustále růst v oboru vývoje webových aplikací a informačních systémů. v roce 2002 se přidal zájem o ekonomii a v roce 2006 o organizaci práce. Vším tím se konstantně profesně zabývá jak ve svém podnikání, tak i u zákazníků. Za posledních 5 let vydal na tato témata přes 400 článků.

Prohlédněte si moje reference

Mám zkušenosti z rozsáhlých projektů pro korporace, velké podniky, střední i malé firmy, ale i pro startupy v cloudu. Zvyšoval jsem jejich know-how, pomáhal nastavovat jejich organizační strukturu, byl lektorem a mentorem v náročných situacích. Podívejte se, jak vidí můj přínos samotní klienti.

Sledujte mé postřehy na sociálních sítích