我的PhpUnit有问题。我想使用PHPUnit的isIdentical
方法来确保使用特定对象作为参数调用方法。
给定是一个带有方法“setBar”的模拟对象:
$bar = new Bar();
$someMock
->expects($this->any())
->method('setBar')
->with($this->identicalTo($bar));
$someMock->setBar($bar);
这当然只是一个例子。它应该工作,但事实并非如此。为了获得一些提示,我在PHPUnit_Framework_Constraint_IsIdentical
方法中编写了一些echo代码:
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