Почему сложно тестировать синглтоны или шаблон реестра на таком языке, как PHP, который управляется запросами?
Вы можете писать и запускать тесты помимо фактического выполнения программы, так что вы можете свободно влиять на глобальное состояние программы и запускать разборку и инициализацию для каждой тестовой функции, чтобы привести ее в одно и то же состояние для каждого теста.
Я что-то упустил?