Фреймворк Phake: как клонировать объекты на captureAll?

\ Phake :: captureAll возвращает массив параметров, используемых в последовательных вызовах.
Он отлично работает со скалярами или когда передаются разные объекты, но не очень полезен, когда используется один и тот же объект. Это случается довольно часто для картограф данных издевается, когда CUT изменяет и сохраняет объект несколько раз.

В следующем примере я пытаюсь утверждать, что первый $mock->fooWithArgument был вызван с ожидаемыми аргументами, но не может найти способ сделать это:

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
}

12

Решение

Это невозможно с v2.x фреймворка. Соответствующий пиар находится на рассмотрении, и будущие версии могут поддерживать такие варианты использования.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]