PhpRiot
News Archive
PhpRiot Newsletter
Your Email Address:

More information

Lars Tesmer's Blog: PHPUnit: Better Syntax for Expecting Exceptions

Note: This article was originally published at PHPDeveloper on 6 September 2011.
PHPDeveloper

Lars Tesmer has an alternative to testing xceptions in PHPUnit that's a bit more flexible than just a docblock comment definition.

My main issues with this way of expecting exceptions are: The expectation is pretty far away from the location you'd normally expect to find an assertion. Usually, an assertion can be found at the bottom of each test function, whereas with the current method PHPUnit uses, it's at the top of the test-function. Additionally, it's an annotation "buried" in a comment which is easy to miss. Finally, PHPUnit will watch for an exception thrown by any of the code inside the test-function.

To replace it, he's created an "assertThrowsException" test that takes in the exception type to test for and the code to test for the exception (via a closure). He has his proof-of-concept posted on github if you'd like to give it a try. This also allows you to test for more than one exception in the same test, possibly as a result of slightly different conditions.