/PhpUnitAssertException

Assert exception/throwable/error PHPUnit trait

Primary LanguagePHP

PhpUnitAssertException

AssertException is a trait, so it can be easily used in your test case.

  • For PHP 7.1 and PHPUnit 6 compatibility require version 1.3.
  • For PHP 7.1 compatibility require version 1.2.
  • For PHP 7 compatibility require version 1.1.
  • For PHP 5 compatibility require version 1.0.

Install

$ composer require vladahejda/phpunit-assert-exception

Usage

<?php

class MyTest extends \PHPUnit\Framework\TestCase
{
	use VladaHejda\AssertException;

	public function testMultipleExceptionsAtOnce()
	{
		$test = function () {
			// here comes some test stuff of your unit (tested class)
			// which you expect that will throw an Exception
			throw new InvalidArgumentException('Some message 12345', 100);
		};

		// just test if function throws an Exception
		$this->assertException($test); // pass

		// test class of an Exception
		$this->assertException($test, InvalidArgumentException::class); // pass

		// test Exception code
		$this->assertException($test, null, 100); // pass

		// test Exception message
		$this->assertException($test, null, null, 'Some message 12345'); // pass
		$this->assertException($test, null, null, 'Some message'); // also pass, because it checks on substring level

		// test all
		$this->assertException($test, InvalidArgumentException::class, 100, 'Some message 12345'); // pass

		// and here some failing tests
		// wrong class
		$this->assertException($test, ErrorException::class); // fail
		// wrong code
		$this->assertException($test, InvalidArgumentException::class, 200); // fail
		// wrong message
		$this->assertException($test, InvalidArgumentException::class, 100, 'Bad message'); // fail
	}
}

Also see an assertError and assertThrowable methods, which tests if PHP internal Error was thrown, or any Throwable respectively.