В своих модульных тестах я использую объекты Typoon и TyphoonBlockComponentFactory для создания макетов, объектов и так далее. Все мои модульные тесты запускаются одновременно, по порядку, и каждый настраивает свою собственную фабрику только с теми сборками, которые необходимы для запуска.
Он создает эту фабрику и каждый раз делает ее фабрикой по умолчанию, поэтому тестируемые классы могут создавать экземпляры своих зависимостей от фабрики. Но метод makeDefault в TyphoonComponentFactory заключен в блок dispatch_once, что означает, что он может произойти только один раз за время существования приложения.
Почему? какая-то часть моего подхода в корне неверна? Я хотел бы иметь возможность каким-то образом разрушить состояние Typhoon в моих методах tearDown, но я не знаю, как — не могу уничтожить синглтон!