Re[2]: Паттерны внедрения зависимостей
От: ionoy Эстония www.ammyui.com
Дата: 05.04.16 09:01
Оценка: 5 (1)
Здравствуйте, Sinix, Вы писали:

S>По-моему, эта проблема общая для любой _динамической_ системы разруливания зависимостей и нюансы конкретной реализации тут мало что решают. Особенно с типовым для биз-логики требованием "настраиваемый объект может _динамически_ создавать другие настраиваемые через DI объекты".


Лично для меня разница, всё-таки, есть. Вот два примера:


//1
public A(ServiceLocator locator) {
  var repository = locator.GetService<IRepository>();
}

//2
public B(IRepository repository) {
}


Казалось бы, действие одно и то же. Но тестировать второй вариант значительно проще, так как у нас есть контракт которому нужно соответствовать.
Если же у нас по коду класса раскаданы вызовы GetService, то это неизменно приводит к тому что тесты сыпятся в рантайме, а это не есть хорошо.

Для себя обозначил такое правило: "ServiceLocator не должен встречаться в тестируемом коде".
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Отредактировано 05.04.2016 9:02 ionoy . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.