Шаблон MVP: Отделение зависимости базы данных от докладчика? - PullRequest
0 голосов
/ 27 октября 2011

Всякий раз, когда я пытаюсь на самом деле выполнить модульное тестирование докладчика и смоделированного представления, я сталкиваюсь со слишком многими зависимостями базы данных

 public EditAccount(IAccountEditPage _view, ISession _session, IResponse _response)
 {

 }

 public void view_SaveUser()
 {
   //Class that takes the view's data and persists it to DB  
 }

Очевидно, что я не могу написать модульные тесты для этого докладчика, потому что у меня естьКонкретность использования моего модельного класса, который имеет сильную зависимость от базы данных.

Как я должен удалить зависимость от базы данных без конструктора, внедряющего каждый класс, который касается базы данных в моем презентаторе?Я не хочу делать это каждый раз, когда у меня есть представление.

Я использую moq, если это поможет.

Редактировать: Также я должен упомянуть, что код в "view_SaveUser" очень скудный и не является прямым доступом к базе данных или чем-то в этом роде.Обычно это всего несколько строк.Я не перешагиваю рамки докладчика, AFAIK.

1 Ответ

1 голос
/ 27 октября 2011

Если вы не хотите внедрять экземпляры в конструктор, другой вариант, который у вас есть, - это использование метода установки с использованием инфраструктуры IoC, например Spring.Net или Castle Windsor для внедрениязависимости.

При этом вам нужно будет только указать в конфигурации платформы, какие классы используются для реального кода и для тестового проекта, зависимости будут автоматически вставлены, и вы избежите необходимости использовать конструктор.

...