0

我对 PhpUnit 有疑问。我想使用isIdenticalPHPUnit 的方法来确保以特定对象作为参数调用方法。给定的是一个带有“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

4

0 回答 0