метод init() вызывается вообще в совершенно другом месте
Тестами можно покрыть только то, что имеет явное и воспроизводимое состояние.
Как мне сделать фейковый класс Settings, что бы в тестируемом методе значение переменной обращалось бралось из свойства фекового класса?
Никак. В момент объявления функции, которая использует Settings, происходит замыкание, и в функции сохраняется ссылка именно на то значение внешней переменной Settings, которое было на момент объявления. Это можно обойти, но я вам не скажу, как, а то вы такого наворотите, что мама дорогая:)
Но вообще какая-то странная у вас архитектура. Класс, у которого есть статический метод init — это очень странно пахнет. Синглтон, что ли? Если да, то бросьте бяку.