Возможно ли издеваться над корпоративной библиотекой 5 версии 'Database'? Если так ... как?Mocking Enterprise Lib 5 'Database'
Нет интерфейса IDatabase (что является загадкой, поскольку Microsoft P & P будет больше на шаре о преимуществах тестирования, демонстрирующих такой интерфейс).
У меня есть класс репозитория, который использовал EntLib 5 Application Application Block.
Я выполняю ретро-установку в этом классе и должен изнашивать зависимость от объекта базы данных. Этот класс теперь передал базу данных через свой конструктор и использует объект Database для выполнения операций над Db.
Я использую следующее разрешить экземпляр базы данных, которые будут переданы моей Repository:
Container.RegisterType<IFooRepository, FooRepository>(
new InjectionConstructor(
EnterpriseLibraryContainer.Current.GetInstance<Database>("FooDbConnStr")
)
);
Я не хочу этих модульных тестов, чтобы стать интеграционные тесты.
Я пробовал использовать Moq для создания динамического макета типа базы данных, но это оказалось непростым, поскольку для базы данных требуется строка подключения и DbProviderFactory в ее конструкторе. Возможно, если была такая вещь, как MockDbProviderFactory.
Это форма, что тестовый модуль принимает:
Помимо: Я также найти применение статического регистратора класса очень трудно проверить. Надеюсь, я пропустил здесь какую-то трюк, но я должен сказать, что до сих пор разочарован тестированием.
Извините за мое невежество, но поскольку у вас есть интерфейс для вашего репозитория, не проще было бы издеваться над IFooRepositor вместо базы данных? – thiagoleite
Мне нужно было высмеять экземпляр базы данных EntLib в этом сценарии, чтобы изолировать проверку реализации IFooRepository в отдельности. – holsee