Собственные функции не могут быть смоделированы.Для этого вам понадобится что-то вроде runkit или patchwork .
Что вы можете сделать, это использовать шаблон стратегии и обернуть вызовы нативных функций в отдельные объекты Command или Closures / Lambdas и использовать их вместо этого.Те могут быть переданы и обменены свободно.
Пример 1 - Использование лямбда-функции:
$callback = function() {
// a native function in here
}
$class->callback($callback);
Пример 2 - Использование объекта команды:
interface ICommand
{
public function execute();
}
class Callback implements ICommand
{
public function execute()
{
// a native function in here
}
}
$class->callback(array('Callback', 'execute'));
Затем можно легко смоделировать эти обратные вызовы.Я не уверен, как PHPUnit реализует вещь «меня звали».Либо посмотрите в исходный код, либо добавьте шаблон субъекта / наблюдателя.