Assert functies, hoe werkt het precies
ik wil graag een api gebruiken, maar de host's php versie is te laag voor assert functies, dus deze wil ik terug 'porten'.
Nou begrijp ik alleen niet precies wat assert doet. Gooit het een exception of iets ?
Ik heb bijv.
Code (php)
1
2
3
2
3
$shipments = $this->pullShipments();
$this->assertEquals(count($shipments), 2);
return $shipments;
$this->assertEquals(count($shipments), 2);
return $shipments;
- Wat gebeurt er als er maar 2 shipments zijn ?
- Wat gebeurt er als count shipments 0,1,3 < is ?
- Wat wordt de return ?
Een assertion doet precies wat het zegt: het controleert of de gegeven waarde gelijk is aan de verwachting. Wanneer dit niet het geval is mislukt de test en wordt een exception gegooid. Dit soort zaken wordt normaliter alleen gebruikt bij unit tests en integration tests.
Ben van Velzen op 08/06/2017 20:48:23:
Een assertion doet precies wat het zegt: het controleert of de gegeven waarde gelijk is aan de verwachting. Wanneer dit niet het geval is mislukt de test en wordt een exception gegooid. Dit soort zaken wordt normaliter alleen gebruikt bij unit tests en integration tests.
Bedankt voor de reactie Ben, na wat meer onderzoek is hier ook het PHPUnit framework voor nodig. Deze kan ik helaas niet installeren, dus zal ik deze 'assertion' functions ombouwen :)
PHPUnit is inderdaad voor de genoemde unit tests, wanneer je dit niet doet heb je deze functies niet nodig. Assertions worden normaal niet gedaan in productiecode, weet je zeker dat je niet naar tests zit te kijken?
Dus bovengenoemde stukje is voor een 'vast' resultaat (test), dat in principe altijd 2 orders bevat.
Is dat niet het geval, is er waarschijnlijk iets mis gegaan met opbouwen van de query naar de backend, en dus gooit het een exception :)
Ik las wel dat assert*() true of false geeft, daarom dacht ik al dat het een exception zou gooien.
Dus zal zowiezo voor de overige assert functions, zelf m'n eigen validatie overheen halen :)
Dennis WhoCares op 08/06/2017 21:02:39:
Ik las wel dat assert*() true of false geeft, daarom dacht ik al dat het een exception zou gooien.
Indien er een exception wordt gethrowd kun je ook 'banaan' retourneren, hier zal nooit iets mee gedaan worden want met het optreden van een exception stap je uit de normale flow van je applicatiecode. Tis het een of het ander lijkt mij, maar niet allebei.
Ingeval je exceptions gebruikt zul je natuurlijk ook een try-catch blok moeten hebben. Niet gevangen exceptions resulteren in een fatal error.