2017 © Pedro Peláez
 

library phpunit-assert-throws

Exception assertions for PHPUnit

image

jchook/phpunit-assert-throws

Exception assertions for PHPUnit

  • Saturday, April 7, 2018
  • by jchook
  • Repository
  • 1 Watchers
  • 1 Stars
  • 256 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 2227 % Grown

The README.md

PHPUnit assertThrows()

Industry standard, lambda-based exception testing assertions for PHPUnit., (*1)

Installation

Easily install it with composer:, (*2)

composer require --dev jchook/phpunit-assert-throws

Or, alternatively copy the tiny gist and add it to you project. No attribution is requried. True artists steal., (*3)

Rationale

To enable lambda-based exception testing syntax to PHPUnit., (*4)

  • Throw multiple errors per test
  • Examine and test errors after they are caught
  • Copy-paste usage examples
  • Use standard assert* syntax
  • Test more than just message, code, and class
  • Write simple happy-path tests with assertNotThrows

Example

Just to illustrate the spirit behind the syntax:, (*5)

assertThrows(
  MyException::class,
  fn() => $x->doSomethingBad()
);
```

---


Advanced Example
----------------

The class below demonstrates more advanced features.

```php
assertThrows(MyException::class, function() use ($obj) {
            $obj->doSomethingBad();
        });

        // Test custom aspects of a custom extension class
        $this->assertThrows(MyException::class,
            function() use ($obj) {
                $obj->doSomethingBad();
            },
            function($exception) {
                $this->assertEquals('Expected value', $exception->getCustomThing());
                $this->assertEquals(123, $exception->getCode());
            }
        );

        // Test that a specific method does *NOT* throw
        $this->assertNotThrows(MyException::class, function() use ($obj) {
            $obj->doSomethingGood();
        });
    }
}

?>

Notes

Yes, assertNotThrows() feels grammatically… odd. However, it conforms with the PHPUnit naming conventions, such as assertNotContains(). Additionally, the PHPUnit team suggests we may not need this inverse assertion., (*6)

License

MIT, (*7)

The Versions

07/04 2018

dev-master

9999999-dev

Exception assertions for PHPUnit

  Sources   Download

MIT

by Wes Roberts

07/04 2018

v1.0.0

1.0.0.0

Exception assertions for PHPUnit

  Sources   Download

MIT

by Wes Roberts