В коде моего приложения у меня есть проверка method_exists
для авторизации некоторых перехватов в процессе создания:
// Note: $myClass is implementing a ListItemFactory interface.
if ($isCreate) {
$methodName = "create{$attr}ListItem";
if (method_exists($myClass, $methodName)) {
$item = $myClass->$methodName();
} else {
[...]
}
}
Я пытаюсь протестировать этот код, издеваясь над $myClass
и проверяя, действительно ли вызывается $methodName
. Вот как я написал тест:
/** @test */
function specific_create_method_is_called()
{
$factory = Mockery::mock(ListItemFactory::class)->makePartial();
$factory->shouldReceive("createCommentsListItem")->once();
[...]
}
Но это не работает, потому что в макете не определен метод method_exists. Я новичок в издевательстве над вещами, поэтому, возможно, есть очевидный способ справиться с этой проблемой, например, «заглушить» нужную функцию, но я не смог найти способ...
Заранее благодарю за любую помощь.