Add daily email for 2024-05-08

Assertions aren't just for tests
This commit is contained in:
Oliver Davies 2024-05-11 01:08:18 +02:00
parent acfd4c5704
commit 5910e4eb0e

View file

@ -0,0 +1,42 @@
---
title: Assertions aren't just for tests
date: 2024-05-08
permalink: archive/2024/05/08/assertions-arent-just-for-tests
tags:
- software-development
- drupal
- php
- automated-testing
cta: ~
snippet: |
`assert()` isn't just for automated tests.
---
If you've written or seen automated tests in PHP, you'll have seen lines like this:
```php
self::assertTrue(FALSE);
```
But, did you know assertions can be used outside of tests.
PHP has an `assert()` function that can be used anywhere.
For example, if I had this code:
```php
$node = Node::load(1);
assert($node instanceof NodeInterface);
assert($node->bundle() === 'page');
```
I know `$node` is a node with the correct bundle type and I can continue.
I've made my assumptions explicit.
If `$node` is not the correct type or returns an unexpected bundle, the assertion will fail and an Exception will be thrown.
I think this is better than assuming or hoping the values are as you expect, and it also makes the intent of the code much easier to see and understand.
If you haven't tried `assert()` before, give it a try.