oliverdavies.uk/source/_daily_emails/2024-05-08.md

43 lines
1.1 KiB
Markdown
Raw Normal View History

---
title: Assertions aren't just for tests
date: 2024-05-08
permalink: daily/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.