alezhu/phpunit-array-contains-asserts

提供PHPUnit断言,用于测试数组是否包含特定数据或结构

10.0.4 2023-09-08 16:20 UTC

This package is auto-updated.

Last update: 2024-09-25 21:23:25 UTC


README

PHPUnit 10 latest version PHPUnit 10 build Status PHPUnit 9 latest version PHPUnit 9 build Status PHPUnit 8 latest version PHPUnit 8 build Status Total Downloads License PHP Version Require GitHub code size in bytes

提供PHPUnit断言,用于测试类似数组的对象是否包含预期数据及其结构。

此PHPUnit扩展是为PHPUnit 10编写的,但也提供了PHPUnit 8和PHPUnit 9的分支。如果它无法正常工作,请勿犹豫,在GitHub上新建问题,或者,更好的是,创建一个带有建议修复的Pull Request。

目录

  1. 安装
  2. 用法
    1. 约束 ArrayContains
    2. 约束 ArrayContainsOnly

安装

PHPUnit arrayContains asserts可在Packagist.org找到,并可以使用Composer进行安装

composer require --dev alezhu/phpunit-array-contains-asserts

用法

使用PHPUnitArrayAssertions有三种(基本等效)选项

所有选项都执行相同的操作,唯一的区别是静态类和特性都会为无效参数抛出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         
    ]
);