アサーション:
$chain->expects($this->once())
->method('addMethodCall')
->with(
'addOptionsProvider',
array(
$this->isInstanceOf('Symfony\Component\DependencyInjection\Reference'),
$this->equalTo(7)
)
);
$chain
は実際には のモック オブジェクトでありDefinition
、これがテストしたいコードです。
$definition->addMethodCall(
'addOptionsProvider',
array(new Reference($id), $priority)
);
私はPHPUnitを始めたばかりなので、何が欠けているのか本当にわかりません。引数についてのアサーションは、理解するのが本当に難しいと思います。アサーションと実際のパラメーターの視覚的な違いを示す画像を含めました。
PHPUnit_Framework_ExpectationFailedException : メソッド名の期待値が 1 回呼び出されたときと等しい 呼び出しのパラメータ 1 Symfony\Component\DependencyInjection\Definition::addMethodCall('addOptionsProvider', Array (...)) が期待値と一致しません。
編集:実際、私はこれで終わった:
$chain->expects($this->once())
->method('addMethodCall')
->with(
$this->identicalTo('addOptionsProvider'),
$this->logicalAnd(
$this->isType('array'),
$this->arrayHasKey(0),
$this->arrayHasKey(1)
)
);
しかし、さらにアサーションを行うために配列の値に「入る」ことはできません!