Есть классы:
class Aaa {
private $bbb;
public $some_property = 10;
function __construct(B $bbb){
$this->bbb = $bbb;
}
public function some_func(){
// ...
$bbb->change_aaa_property($this);
// ...
}
}
class Bbb {
function change_aaa_property(A $aaa){
$aaa->some_property += 10;
}
}
В методе some_func() класса Aaa у объекта $bbb, который является свойством класса Aaa, вызывается метод change_aaa_property(). В этом change_aaa_property() изменяется свойство $some_property класса Aaa.
Я знаю, что зависимости нужно заменять mock объектами, то есть $bbb нужно заменить на mock объект. Но тогда как метод фиктивного объекта $bbb — change_aaa_property() сможет изменить $some_property объекта $aaa??? Ведь у mock объектов, вроде как, нет реализации методов. И после тестирования some_func() значение свойства $some_property остаётся таким же (10).
Короче говоря, я хочу понять как при тестировании some_func() сделать так, чтобы метод change_aaa_property() фиктивного объекта $bbb, изменил свойство $some_property класса Aaa.
Или возможно есть другой способ чтобы протестировать some_func()?
Я долго искал но не нашёл ничего внятного, может неправильно искал. Да, возможно, это плохой дизайн и так делать не стоит, но всё-таки реально ли это сделать?