承接 jchook/phpunit-assert-throws 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

jchook/phpunit-assert-throws

最新稳定版本:v1.0.3

Composer 安装命令:

composer require jchook/phpunit-assert-throws

包简介

Exception assertions for PHPUnit

README 文档

README

Industry standard, lambda-based exception testing assertions for PHPUnit.

Installation

Easily install it with composer:

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.

Rationale

To enable lambda-based exception testing syntax to PHPUnit.

  • 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:

<?php

// Within your test case...
$x = new MyTestedObject();
$this->assertThrows(
  MyException::class,
  fn() => $x->doSomethingBad()
);

Advanced Example

The class below demonstrates more advanced features.

<?php

declare(strict_types=1);

// PHPUnit
use PHPUnit\Framework\TestCase;

// This library
use Jchook\AssertThrows\AssertThrows;

// Your classes
use MyNamespace\MyException;
use MyNamespace\MyObject;

final class MyTest extends TestCase
{
	use AssertThrows; // <--- adds the assertThrows method

	public function testMyObject()
	{
		$obj = new MyObject();

		// Ensure that a function throws a specific exception
		$this->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.

License

MIT

统计信息

  • 总下载量: 1.71M
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 11
  • 点击次数: 1
  • 依赖项目数: 17
  • 推荐数: 0

GitHub 信息

  • Stars: 11
  • Watchers: 1
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-04-07