我对 PhpUnit 有疑问。我想使用isIdentical
PHPUnit 的方法来确保以特定对象作为参数调用方法。给定的是一个带有“setBar”方法的模拟对象:
$bar = new Bar();
$someMock
->expects($this->any())
->method('setBar')
->with($this->identicalTo($bar));
$someMock->setBar($bar);
这当然只是一个例子。它应该工作,但它没有。为了获得一些提示,我在方法中编写了一些回显代码PHPUnit_Framework_Constraint_IsIdentical
:
public function evaluate($other, $description = '', $returnResult = FALSE)
{
//...
echo "\n";
echo spl_object_hash($other) . "/". spl_object_hash($this->value). " - ". get_class($this->value) ."/". get_class($other);
echo " ->> ";
var_dump($other === $this->value);
}
的对象哈希$other
不一样($this->value
而哈希$this->value
实际上是正确的)
与此同时,我在这里找到了这个错误的原因。这是 PHPUnit 的问题。对象被 PHPUnit 克隆。我留下这个问题如果有人知道这个问题的好解决方法。
https://github.com/sebastianbergmann/phpunit-mock-objects/issues/41