\ Phake :: captureAll zwraca tablicę parametrów używanych w kolejnych połączeniach. Działa poprawnie z skalarami lub gdy przekazywane są różne obiekty, ale nie jest zbyt użyteczny, gdy używany jest ten sam obiekt. Zdarza się to dość często dla data mapper kpi, gdy CUT modyfikuje i utrzymuje obiekt kilka razy.Framework Phake: jak klonować obiekty na captureAll?
W poniższym przykładzie próbuję twierdzić, że pierwszy $mock->fooWithArgument
nazwano z oczekiwanymi argumentami, ale nie może znaleźć sposób, aby to zrobić:
public function testArgumentCapturingAllValls()
{
$mock = \Phake::mock('PhakeTest_MockedClass');
$obj1 = new \stdClass;
$obj1->bar = 1;
$mock->fooWithArgument($obj1);
$obj1->bar = 2;
$mock->fooWithArgument($obj1);
\Phake::verify($mock, \Phake::atLeast(1))->fooWithArgument(\Phake::captureAll($toArgument));
$this->assertEquals(1, $toArgument[0]->bar); //fails, as both elements point to the same instance
}