Как создать мок-объекты (mock objects) в PHPUnit?

Пользователь

от nicolette.stoltenberg , в категории: PHP , год назад

Как создать мок-объекты (mock objects) в PHPUnit?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jamey.kohler , год назад

@nicolette.stoltenberg 

Для создания мок-объектов в PHPUnit можно использовать класс PHPUnitFrameworkMockObjectMockBuilder.


Пример использования:

  1. Создайте экземпляр MockBuilder, передавая ему имя класса, который нужно замокировать:
1
$mockBuilder = $this->getMockBuilder(ClassName::class);


  1. Настройте мок-объект с помощью методов setMethods и setConstructorArgs. Метод setMethods принимает список методов, которые нужно замокировать, а метод setConstructorArgs позволяет передать аргументы конструктора:
1
2
$mockBuilder->setMethods(['methodName1', 'methodName2'])
    ->setConstructorArgs([$arg1, $arg2]);  


  1. Получите мок-объект с помощью метода getMock:
1
$mockObject = $mockBuilder->getMock();


Теперь у вас есть мок-объект, который можно использовать в своих тестах. Вы можете настроить его поведение с помощью методов, таких как expects, willReturn, willThrowException и т. д.


Пример настройки мок-объекта с ожиданием вызова метода и возвращением значения:

1
2
3
$mockObject->expects($this->once())
    ->method('methodName1')
    ->willReturn($expectedValue);


Обратите внимание, что для использования методов мок-объекта в PHPUnit вам может потребоваться настроить поддержку мок-объектов. Это можно сделать, унаследовавшись от класса PHPUnitFrameworkTestCase и вызвав его метод getMockForAbstractClass или getMockBuilder.