0

PhpUnitに問題があります。PHPUnitのメソッドを使用しisIdenticalて、特定のオブジェクトをパラメーターとしてメソッドが呼び出されるようにします。与えられたのは、メソッド「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