Как смоделировать или заглушить сгенерированный объект .NetTiers объекта DataRepository
-
03-07-2019 - |
Вопрос
Я использую насмешки Rhino для блочного тестирования объектов. Наш DAL использует CodeSmith для генерации кода из шаблонов .netTiers, который создает эти классы DataRepository, которые содержат все методы для транзакции типа CRUD с источником данных. В модульном тестировании я пытаюсь смоделировать этот объект хранилища данных, у которого нет класса интерфейса для использования в качестве заглушки.
Вкратце, кто-нибудь успешно использовал насмешки Rhino для насмешки сгенерированного DataNet-репозитория .netTiers, избегая необходимости тестовой базы данных и реальных транзакций с источником данных, который должен быть уничтожен в конце ??
Решение
Я размышлял над этим некоторое время, так как никто не подошел и не написал фиктивную реализацию DataRepository для netTiers (насколько мне известно).
Поскольку мне не слишком важны шаги воспроизведения записей в TypeMock и RhinoMocks, я выбрал более новый Moq, который с радостью будет издеваться над классами DataRepository или слоями Service с минимальными трудностями. р>
Предполагая, что вы используете .NET 3.5, я бы порекомендовал это.
Другие советы
Короче говоря, Rhino может только макетировать типы, которые являются интерфейсами или незапечатанными классами. Кроме того, вы можете использовать только виртуальные или абстрактные методы-заглушки. Р>
Если ваша цель заключается в замене DataRepository на фиктивную реализацию, я думаю, вам придется изучить более продвинутые фреймворки, такие как TypeMock .
Если вы контролируете шаблоны CS, другим вариантом будет использование шаблонов для создания ложных реализаций DataRepository. Р>