Assert functies, hoe werkt het precies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis WhoCares

Dennis WhoCares

08/06/2017 16:33:35
Quote Anchor link
Dag allemaal,

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$shipments = $this->pullShipments();
        $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 ?
 
PHP hulp

PHP hulp

23/12/2024 19:37:28
 
Ben van Velzen

Ben van Velzen

08/06/2017 20:48:23
Quote Anchor link
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.
 
Dennis WhoCares

Dennis WhoCares

08/06/2017 20:50:30
Quote Anchor link
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 :)
 
Ben van Velzen

Ben van Velzen

08/06/2017 20:57:05
Quote Anchor link
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?
 
Dennis WhoCares

Dennis WhoCares

08/06/2017 21:02:39
Quote Anchor link
x_x ja ik zit inderdaad wel naar een client_test.php te kijken om te begrijpen hoe het werkt.

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 :)
 
Thomas van den Heuvel

Thomas van den Heuvel

08/06/2017 21:08:16
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.