测试:
$this->assertThat(
array("James Bond", 'james@bond.com', '12345'),
$this->contains('James Bond')
);
正常工作,但是如果我将数组更改为object:
$this->assertThat(
new User("James Bond", 'james@bond.com', '12345'),
$this->contains('James Bond')
);
然后我有错误:
断言可穿越者包含'詹姆斯邦德'。
如何使用assertThat with object和contains方法?
我的用户类:
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;
}
}
答案 0 :(得分:2)
您没有提供有关您的用户对象的详细信息,但显然它是可遍历的内容。
您是否尝试过iterator_to_array功能?
$this->assertThat(
iterator_to_array(new User("James Bond", 'james@bond.com', '12345')),
$this->contains('James Bond')
);
编辑:
实际上contains
会检查一个数组值,这里你的属性是私有的(这很棒),所以检查属性值的唯一方法是使用它的getter
这是你想要做的事情
$this->assertEquals('James Bond', $user->getName());