Unit test framework
Mocht iemand interesse hebben om het eens uit te proberen, dan kun je het downloaden op deze GitHUb pagina.
Daarin staat uiteraard ook de uitleg hoe je het in detail moet gebruiken.
Schroom je overigens niet om het project te "Watchen" of the "Starren" als je zelf ook een github account hebt. Dat zou ik enorm waarderen.
Nu weet ik natuurlijk niet hoeveel er hier ook daadwerkelijk OO programmeren, laat staan hun code unit testen. Maar ik zou zeggen, misschien is dit dan een goed begin ;)
Gewijzigd op 03/12/2013 10:05:30 door D Vivendi
Mag ik, puur uit technische belangstelling, vragen waarom je deze vorm van assertions gebruikt?
$this->Assert($bool)->Should()->BeFalse();
In PHPUnit is dat kortweg:
$this->assertFalse($bool);
Wat jij doet is bij het mocken een nieuwe klasse aanmaken, dat is nu net niet de bedoeling.
De rede dat ik voor die vorm heb gekozen is omdat je op die een soort "fluent" achtige syntax hebt. Ik vind het persoonlijk makkelijk lezen en uitbreiden. Je kan bijvoorbeeld ook dit doen:
$this->Assert($num)->Should()->BeInt()->And()->GreaterThan(5);
Dus eigenlijk meer een kwestie van smaak denk ik en ook gewenning uit de .NET wereld waar dit idee vandaan komt. Maar goed, dit is PHP en daarom belangrijk om te weten wat mensen fijner vinden. Dan kan ik het altijd nog aanpassen :)
@Wouter J
Je hebt inderdaad gelijk wat betreft het initialiseren van een object voor het mocken. Dat zou niet moeten op de manier hoe ik dat nu doe. Dat ga ik nog ff verbeteren.
Ik vind het ook wel fijn werken (al zou ik wel altijd beginnen met een lowercase letter). Ziet er een beetje uit als de geweldige syntax van PHPspec:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// ...
class StopwatchSpec extends ObjectBehaviour
{
public function it_cannot_stop_when_not_started()
{
$this->shouldThrow(\LogicException)->duringStop();
}
public function it_times_the_laps()
{
$this->start();
sleep(1200);
$this->lap();
sleep(1200);
$this->stop();
$this->getLaps()->shouldReturn(2);
$this->getLapTime()->shouldBeLike(1200);
}
}
// ...
class StopwatchSpec extends ObjectBehaviour
{
public function it_cannot_stop_when_not_started()
{
$this->shouldThrow(\LogicException)->duringStop();
}
public function it_times_the_laps()
{
$this->start();
sleep(1200);
$this->lap();
sleep(1200);
$this->stop();
$this->getLaps()->shouldReturn(2);
$this->getLapTime()->shouldBeLike(1200);
}
}
Gewijzigd op 03/12/2013 13:56:42 door Wouter J