Я пытаюсь очистить свой код, чтобы его можно было тестировать на единицу. Я знаю, что модульные тесты должны быть созданы во время кодирования, но ... Я должен сделать это сейчас, с завершением кода.дизайн бизнес-класса для модульного теста
Мой бизнес класс полон методов с подобной реализации, как:
var rep=new NHrepository<ModelClass1>(Session);
rep.Where(x=>x.Field1==1).ToList();
первая ошибка (с моей точки зрения), что я не должен использовать «новый», но вместо того, чтобы использовать DI и добавьте в параметры ctor INHrepository modelClass1Repository.
Если в моем классе у меня есть два или более хранилища разных классов модели? Каждый должен быть в ctor? Или, возможно, бизнес-класс не построен с принципом SeparationOfConcern?
Я думаю, что это неправильный подход, поскольку свойство может быть выделено «не установлено», но параметр ctor не может. В моем случае репозиторий ДОЛЖЕН быть установлен, поэтому я предполагаю, что лучше оставить его в ctor. –
Я думаю, что вы неправильно понимаете приведенный выше пример кода. В приведенном выше примере репозитории всегда будут автоматически создаваться (другими словами, устанавливаться) автоматически Ninject всякий раз, когда вы создаете объект, содержащий эти свойства. Невозможно забыть создавать копии ваших репозиториев. Я не вижу серьезных отличий от их создания с помощью конструктора, за исключением того, что это меньше усилий и делает ваш код более гибким. –