Я думаю, что вы хотели вызвать функцию $this->identicalTo
в функции with
.Это проверит, что правильный объект был передан.Если вы обновите код для передачи в $mock1
, он не сможет работать, потому что объекты не совпадают
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testExample()
{
$mock1 = $this->getMockBuilder(stdClass::class)->getMock();
$mock2 = $this->getMockBuilder(stdClass::class)->getMock();
/** @var MockObject|ArrayObject $mock3 */
$mock3 = $this->getMockBuilder(ArrayObject::class)
->setMethods(['append'])->getMock();
$mock3->expects($this->once())->method('append')->with($this->identicalTo($mock2)); // OK
$mock3->append($mock2);
}
}
Другой Пример:
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testExample()
{
$mock1 = $this->getMockBuilder(stdClass::class)->getMock();
$mock2 = $this->getMockBuilder(stdClass::class)->getMock();
/** @var MockObject|ArrayObject $mock3 */
$mock3 = $this->getMockBuilder(ArrayObject::class)
->setMethods(['append'])->getMock();
$class = new ExampleClass($mock3);
$mock3->expects($this->once())->method('append')->with($this->identicalTo($mock2)); // OK
$class->appendObject($mock2);
}
}
class ExampleClass
{
private $array;
public function __construct(ArrayObject $array)
{
$this->array = $array;
}
public function appendObject($stdClass)
{
$this->array->append($stdClass);
}
}