Вы можете тестировать (утверждать) статические методы, но вы не можете насмехаться над ними или заглушки в PHPunit.
Из документации :
Обратите внимание, что заключительный, закрытый и статический методы не могут быть заглушены или опровергнуты. Они игнорируются тестовой двойной функциональностью PHPUnit и сохраняют свое первоначальное поведение, за исключением статических методов, которые будут заменены методом, выдавшим
BLOCKQUOTE>\PHPUnit\Framework\MockObject\BadMethodCallException exception
.
Можно использовать макрос для переопределения tcp_socket_send
кому: tcp_socket_send_moc
и ссылка с реальным tcp_socket_send
и фиктивная реализация для tcp_socket_send_moc
.
необходимо будет тщательно выбрать надлежащее место для:
#define tcp_socket_send tcp_socket_send_moc
Что ОС Вы используете? Я полагаю, что Вы могли сделать переопределение с LD_PRELOAD на GNU/Linux: Этот слайд выглядит полезным.
Не уверенный, чего Вы хотите достигнуть.
Можно добавить все функции foo_* как участники указателя функции к struct Foo_s
но все еще необходимо явно передать указатель на объект, поскольку там не неявно this
в C. Но это даст Вам инкапсуляцию и полиморфизм.
Взгляните на TestDept: http://code.google.com/p/test-dept/
Это проект с открытым исходным кодом, целью которого является предоставление возможности иметь альтернативные реализации, например заглушки, функций и возможность изменения при запуске -время, какое время использовать для реализации указанной функции.
Все это достигается путем изменения объектных файлов, что очень хорошо описано на домашней странице проекта.