小编sic*_*k_o的帖子

PHPUnit - 检查数组是否包含特定类型的对象

在 PHPUnit 中进行单元测试时,我需要检查数组是否至少包含一个特定类型的对象。

这是我正在寻找的一个简单的例子

$obj_1 = new Type1;
$obj_2 = new Type2; 

$container = array( $obj_1, $obj_2 );

// some logic and array manipulation here

// need something like this
$this->assertArrayHasObjectOfClass( 'Type1', $container );
Run Code Online (Sandbox Code Playgroud)

显然我可以使用自定义代码来做到这一点,但是是否有任何断言(或它们的组合)允许我这样做?

我需要在多个测试中多次这样做,如果我需要的断言不存在,我该如何扩展 PHPUnit 断言集?

编辑:具有特征的自定义解决方案

正如 Vail 所建议的,我想出了一个使用特征的自定义解决方案。这是一个示例版本。

// trait code
trait CustomAssertTrait
{
    public function assertArrayHasObjectOfType( $type, $array, $message = '' ) {

        $found = false;

        foreach( $array as $obj ) {
            if( get_class( $obj ) === $type ) {
                $found = true;
                break;
            } …
Run Code Online (Sandbox Code Playgroud)

php arrays phpunit unit-testing

1
推荐指数
1
解决办法
4504
查看次数

标签 统计

arrays ×1

php ×1

phpunit ×1

unit-testing ×1