В чем разница между getMockBuilder и createMock в PHPUnit?

Я понимаю это так. CreateMock он копирует все методы и свойства из оригинального класса, но не вызывает. А вот getMockBuilder мы можем настроить перед использованием, к примеру использовать метод disableOriginalConstructor() (я подозреваю, что конструктор не будет копироваться). Это верно или нет? Но если это так, то смысл в getMockBuilder не вижу, ведь методы в любом случае не выполняются и нам особо не важно есть конструктор или нет или же getMockBuilder имеет преимущества, которые я не понимаю. Заранее спасибо
  • Вопрос задан
  • 614 просмотров
Пригласить эксперта
Ответы на вопрос 1
Буду ссылаться на официальную документацию:
  1. Функция сreateMock общего назначения, которая мокает объект в соответсвии с лучшими практиками по умолчанию: не вызывается __construct, __clone, __autoload, подменяются все методы. По сути короткий синтаксис для создания мок объектов.
  2. getMockBuilder в свою очередь реализует паттерн Builder и позволяет явно задать состояние мок объекта

Взгляните на два способа создания одинаковых по поведению мок объектов:
$mock1 = $this->getMock(MyClass::class, [], [], '', true, false, true);
$mock2 = $this->getMockBuilder(MyClass::class)
    ->disableOriginalClone()
    ->getMock();

Использование билдера моков проще по визуальному восприятию в некоторых случаях. Я предпочитаю всегда второй способ из-за легкости чтения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы