У меня есть класс (с защищенным конструктором), который содержит несколько статических фабричных методов.Я использую их, чтобы прояснить, к каким параметрам относятся.Например:
MyClass.FromFile(string filename);
MyClass.FromString(string filename);
MyClass.FromParameterSet(...);
Я использую их, чтобы дать различным методам построения название / значение (я знаю, что будут люди, которые скажут мне не делать этого, но, пожалуйста, давайте просто обсудим это так, радиаргумента).
Однако при юнит-тестировании MyClass
у меня возникают проблемы.Я хочу проверить, правильно ли MyClass
инициализирует свои внутренние значения, потому что он делает сложные вещи.Конечно, это не разоблачает их.Обычно шим решает проблему, но с помощью статического метода фабрики я не могу создать экземпляр точно так же, как я буду во мне «реальным кодом», потому что он создаст экземпляр MyClass
, а не MyShimmedClass
.
Очевидный ответ - не использовать статические фабричные методы.Я мог бы сделать это, но мне интересно, есть ли способ исправить это .
(я использую C # на случай, если кому-то интересно.)