Я долгое время пользовался Subsonic 2.x и немного использовал 3.x, но недавно я начал переходить от использования репозиториев к ActiveRecord. В настоящее время я натыкаюсь на некоторые из наших модульных тестов, и мне интересно, возможно ли это, потому что я неправильно понимаю цель метода Setup (). Увы, единственная документация, которую я могу найти, находится в блоге Роба Конери.
В своих модульных тестах я набиваю коллекцию объектов, скажем, Список учетных записей. Затем я хочу убедиться, что некоторый код правильно фильтрует репо по свойству, скажем, по адресу электронной почты. Моя (упрощенная) установка модульного теста приведена ниже.
Особенность заключается в том, что при использовании строк подключения "Test" кажется, что любой LINQ, который я пишу для репо, возвращает мне все записи, которые я вставил в Setup, которые заставляет меня задуматься, не понимаю ли я намерение Setup (). Это как если бы он вел себя как макет, например mymock.Setup (foo => foo.Email) .Returns ("[email protected]").
List accounts = new List()
{
new Account() { FirstName = "Paul", LastName = "McCartney", Email = "[email protected]" },
new Account() { FirstName = "John", LastName = "Lennon", Email = "[email protected]" },
new Account() { FirstName = "Ringo", LastName = "Starr", Email = "[email protected]" },
new Account() { FirstName = "George", LastName = "Harrison", Email = "[email protected]" },
new Account() { FirstName = "Taylor", LastName = "Swift", Email = "[email protected]" }
};
DB.Account.ResetTestRepo();
DB.Account.Setup( accounts );
В другом месте код, который я пытаюсь выполнить для модульного тестирования, в основном выполняет Find (). Реальная реализация имеет полусложный набор условий, но даже упрощенные условия не работают.
Account.Find(a => a.Email == "[email protected]").SingleOrDefault();
Вышеупомянутое будет бомбой с исключением, указывающим, что лямбда вернула несколько элементов. Когда я отлаживаю тест, результат Find () - это все объекты, которые я поместил в имитируемое репо с помощью метода Setup ().
Роб К. сетует на то, что ActiveRecord бывает сложно протестировать, а это обескураживает. Но я не могу представить, что сценарий тестирования ломается на таком приземленном образце - это ведь PEBKAC, верно?
Халп !?
Изменить:
Джош Риверс спрашивает, что похоже на вопрос, но, похоже, он не решен. Связывание для полноты.