Вопрос Программисту - как заменить этот синглтон на его мок?
Твой код синглтона - говно, потому что он не потокобезопасный. Именно вот на эту говённую конструкцию Джон Скит дал свою рецензию:
Bad code! Do not use!
Если ты не знаешь, кто такой Джон Скит, не читал его "C# in depth" или скажешь, что он неправ или тебе плевать на его мнение, то я тебя поставлю в игнор и нам не о чем больше говорить.
Код из моего примера - максимально нетестируемый, это верно. Но не потому что я пишу такой код. Это потому что я показываю, каким говённым может быть древний лигаси-код из огромного продукта, где боятся лишний байт подвинуть.
Ты присобачил к синглтону интерфейс и открыл сеттер. Это не решение.
Объясняю.
Во-первых, это нарушение паттерна. Теперь любой джуниор может заменить в коде объект на что угодно. Что там в определении синглтона написано?
Синглтон - порождающий шаблон проектирования, гарантирующий, что в однопроцессном приложении будет единственный экземпляр некоторого класса
Ты нарушаешь контракт, данный всем клиентам, ради очень сомнительной цели "протестить чего-то там, что юзает этот синглтон".
Во-вторых, ты просто не решил поставленную задачу. Из моего примера видно, что я хочу протестить метод синглтона, а ты мне предлагаешь этот метод заменить на заглушку.
Я воздержусь от оценок твоих навыков и умений ("в отличие от тебя"). Код твоего синглтона и правда говно, но это объективно. Но я всем сердцем надеюсь, что в моей команде не будет таких "программистов", как ты.