2016-07-25 15 views
12

\ 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 
} 

Odpowiedz

0

nie jest możliwe z wersji 2.x ram . The corresponding PR jest rozważany, a przyszłe wersje mogą obsługiwać takie przypadki.