Имеется два класса. В классе Two создаем экземпляр класса One в переменную $one.
class One
{
public function getOne()
{
return 1;
}
}
class Two
{
public function getOnePlusTwo()
{
$one = new One();
return $one->getOne() + 2;
}
}
Тест, в котором подменяю возвращаемое значение метода getOne на 2. Ожидаю 4. Но при запуске теста метод getOne все равно возвращает 1, то есть getMockBuilder никак не влияет глобально на метод, всего лишь делает копию и орудует ей
public function testGetOnePlusTwo()
{
$mock = $this->getMockBuilder(One::class)
->getMock();
$mock->method('getOne')
->willReturn(2);
$two = new Two();
$this->assertEquals(4, $two->getOnePlusTwo());
}
При вызове $mock->getOne возвращается 2, все правильно. но при запуске теста getOne возвращает 1.
Не понимаю как замокать метод класса getOne в функции getOnePlusTwo, чтобы возвращать нужные значения. Подскажите?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости