Я запутался, почему мой частичный тест double не вызывает метод правильно.Это мои классы:
abstract class Model
{
public function update(array $attributes) {
$this->performUpdate($attributes);
}
abstract protected function performUpdate(array $attributes);
}
class Product extends Model
{
protected function performUpdate(array $attributes)
{
print_r($attributes);
}
}
$mock = Mockery::mock(Product::class)->makePartial();
$mock->update([]); // the 'performUpdate' method never gets called
Когда код выполняется, performUpdate
в классе Product
никогда не вызывается.Метод 'update' вызывается, как и ожидалось, но реальный метод performUpdate
никогда не вызывается.Вместо этого он просто возвращает ноль, как если бы он не был частичным макетом.Предполагается, что частичные mock-ы откладываются на метод в mocked-классе, если ожидание не установлено, так почему мой метод не вызывается?