Php 无法断言可遍历对象包含

Php 无法断言可遍历对象包含,php,phpunit,Php,Phpunit,测试: 工作正常,但如果将数组更改为对象: $this->assertThat( array("James Bond", 'james@bond.com', '12345'), $this->contains('James Bond') ); 那么我有一个错误: 断言可遍历对象包含“James Bond”失败 如何将assertThat与object和contains方法一起使用 我的用户类:

测试:

工作正常,但如果将数组更改为对象:

        $this->assertThat(
            array("James Bond", 'james@bond.com', '12345'),
            $this->contains('James Bond')
        );
那么我有一个错误:

断言可遍历对象包含“James Bond”失败

如何将assertThat与object和contains方法一起使用

我的用户类:

        $this->assertThat(
            new User("James Bond", 'james@bond.com', '12345'),
            $this->contains('James Bond')
        );

您没有提供有关用户对象的详细信息,但显然这是一个可遍历的概念

你试过这个功能吗

class User
{
    private $name;
    private $mail;
    private $pass;

    public function __construct($name, $mail, $pass)
    {
        $this->name = $name;
        $this->mail = $mail;
        $this->pass = $pass;
    }

    public function getName()
    {
        return $this->name;
    }

    public function getMail()
    {
        return $this->mail;
    }

    public function getPass()
    {
        return $this->pass;
    }
}
编辑:

实际上,
contains
将检查数组值,这里的属性是私有的(这很好),因此检查属性值的唯一方法是使用其getter

这是你想要做的

$this->assertThat(
        iterator_to_array(new User("James Bond", 'james@bond.com', '12345')),
        $this->contains('James Bond')
    );

您没有提供有关用户对象的详细信息,但显然这是一个可遍历的概念

你试过这个功能吗

class User
{
    private $name;
    private $mail;
    private $pass;

    public function __construct($name, $mail, $pass)
    {
        $this->name = $name;
        $this->mail = $mail;
        $this->pass = $pass;
    }

    public function getName()
    {
        return $this->name;
    }

    public function getMail()
    {
        return $this->mail;
    }

    public function getPass()
    {
        return $this->pass;
    }
}
编辑:

实际上,
contains
将检查数组值,这里的属性是私有的(这很好),因此检查属性值的唯一方法是使用其getter

这是你想要做的

$this->assertThat(
        iterator_to_array(new User("James Bond", 'james@bond.com', '12345')),
        $this->contains('James Bond')
    );

你就不能这样做:
$this->assertContains('jamesbond',$obj)?你就不能这样做:
$this->assertContains('jamesbond',$obj)?用户它是一个简单的PHP类,包含名称、电子邮件、传递和获取字段。您的示例throw:TypeError:Argument 1传递给迭代器_to_array()必须通过编辑您的问题来实现可遍历的接口,用户提供有关用户对象的详细信息(结构)的实例。如果我们不知道您正在测试什么,我们将无法真正帮助您编辑我的答案!User它是一个简单的PHP类,包含字段名称、email、pass和getter。您的示例throw:TypeError:Argument 1传递给迭代器_to_array()必须通过编辑您的问题来实现可遍历的接口,用户提供有关用户对象的详细信息(结构)的实例。如果我们不知道您正在测试什么,我们将无法真正帮助您编辑我的答案!