Я хочу высмеять конструктор, как и любые другие методы. Я также добавил предложение willReturnCallback, которое, похоже, не работает. Я имею в виду, что все это работает с методами, но не с конструктором.PHPUnit, mock constructor?
$mock = $this->getMock ('MyClass', array(), array(), '', false);
$mock->expects($this->once())->method('__construct')->willReturnCallback(function() { echo 'outputt'; });
такой издевательский конструктор не имеет никакого эффекта.
да, «реорганизовать код» - его наследство код .... –
возможно дубликата [аргументы конструктора избежать PHPUnit для фиктивного] (HTTP : //stackoverflow.com/questions/279493/phpunit-avoid-constructor-arguments-for-mock) –
Исходный конструктор вызывается во время макетной конструкции (он просто вызывает конструктор baseclass)). Если вы этого не хотите, вы также можете отключить его. Однако, интересно, почему вы хотите издеваться над конструктором? Дело в том, что, если вы явно не назовете его (это будет запах кода), создание макета делает конструкцию, поэтому слишком поздно ожидать вызова конструктора! –