alezhu / phpunit-array-contains-asserts
提供PHPUnit断言,用于测试数组是否包含特定数据或结构
Requires
- php: ~8.1
Requires (Dev)
- phpunit/phpunit: ^10
README
提供PHPUnit断言,用于测试类似数组的对象是否包含预期数据及其结构。
此PHPUnit扩展是为PHPUnit 10编写的,但也提供了PHPUnit 8和PHPUnit 9的分支。如果它无法正常工作,请勿犹豫,在GitHub上新建问题,或者,更好的是,创建一个带有建议修复的Pull Request。
目录
安装
PHPUnit arrayContains asserts
可在Packagist.org找到,并可以使用Composer进行安装
composer require --dev alezhu/phpunit-array-contains-asserts
用法
使用PHPUnitArrayAssertions
有三种(基本等效)选项
- 通过使用静态类
Alezhu\PHPUnitArrayContainsAsserts\Assert
- 在您的测试用例中使用
Alezhu\PHPUnitArrayContainsAsserts\ArrayContainsTrait
特性 - 创建新的约束实例(
Alezhu\PHPUnitArrayContainsAsserts\Constraint\…
)
所有选项都执行相同的操作,唯一的区别是静态类和特性都会为无效参数抛出类 Alezhu\PHPUnitArrayContainsAsserts\Exception\InvalidArgumentTypeException
(或PHPUnit 9和8的PHPUnit\Framework\InvalidArgumentException
)异常。创建新的约束实例对于高级断言很有用,例如与PHPUnit\Framework\Constraint\LogicalAnd
一起使用。
约束 ArrayContains
ArrayContains
约束断言数组包含所有预期值(对于非关联数组)或所有预期键及其值(对于关联数组)。
预期值可以直接设置或通过另一个PHPUnit约束(PHPUnit\Framework\Constraint\...
)设置。
预期和实际数据可以是数组、迭代器或继承自ArrayObject或实现ArrayAccess+Countable接口。
预期和实际数据必须具有相同的关联类型。
用法
use Alezhu\PHPUnitArrayContainsAsserts\Assert; use PHPUnit\Framework\Constraint\IsType; //Passed Assert::assertArrayContains( [ "foo" => new isType(IsType::TYPE_STRING), "baz" => 1 ], [ "foo" => "value", "bar" => true, "baz" => 1 ] ); //Not Passed Assert::assertArrayContains( [ "foo" => new isType(IsType::TYPE_STRING), "baz" => 1 ], [ "foo" => "bar", ] );
约束 ArrayContainsOnly
ArrayContainsOnly
约束断言数组只包含所有预期值(对于非关联数组)或仅包含所有预期键及其值(对于关联数组)。
预期值可以直接设置或通过另一个PHPUnit约束(PHPUnit\Framework\Constraint\...
)设置。
预期和实际数据可以是数组、迭代器或继承自ArrayObject或实现ArrayAccess+Countable接口。
预期和实际数据必须具有相同的关联类型。
用法
use Alezhu\PHPUnitArrayContainsAsserts\Assert; use PHPUnit\Framework\Constraint\IsType; //Passed Assert::assertArrayContainsOnly( [ "foo" => new isType(IsType::TYPE_STRING), "baz" => 1 ], [ "foo" => "value", "baz" => 1 ] ); //Not Passed Assert::assertArrayContainsOnly( [ "foo" => new isType(IsType::TYPE_STRING), "baz" => 1 ], [ "foo" => "bar", "bar" => true, "baz" => 1 ] );