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