Как имитировать класс Generics, который фактически использовался для извлечения данных из базы данныхC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как имитировать класс Generics, который фактически использовался для извлечения данных из базы данных

Сообщение Anonymous »


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

публичный класс EntityRepositoryBase: IDisposable, IEntityRepository где T: класс { //Контекст — это класс DbContext приложения общедоступный контекст DataContext { получить {вернуться Context.GetContext(); } } общедоступный виртуальный IQueryable GetAll() { вернуть DataContext.Set().AsQueryable(); } public virtual bool Any (предикат Expression) { вернуть DataContext.Set().Any(предикат); } Я хочу имитировать этот DataContext (который связан с реальной базой данных) с помощью контекста базы данных в памяти, чтобы я мог написать различные тесты для следующего метода.

публичный список GetPlantData() { List lstEntity = новый список(); используя (var PlantTypeRepo = новый EntityRepositoryBase()) { // Немного логики... lstEntity = PlantTypeRepo.ToList(); } вернуть LstEntity; } Я добавил свой собственный класс DbContext только для модульных тестов

общедоступный класс MyTestDbContext: DbContext { public MyTestDbContext(DbContextOptions options): base(options) { } общественный DbSet PlantTypes {get; набор; } } В тестовом классе что-то вроде этого

публичный класс MasterDataManagerTests { частный только для чтения DbContextOptions _options; общедоступный MasterDataManagerTest() { // Настройка параметров базы данных в памяти _options = новый DbContextOptionsBuilder() .UseInMemoryDatabase(имябазы данных: "MyTestDb") .Параметры; } [Теория] [InlineData("PLANT_TYPE1")] public void MasterDataManager_GetAllMasterData_ReturnPlantList (строка screenCode) { // Договариваться вар контекст = новый MyTestDbContext (_options); context.PlantTypes.Add(new PlantType { PlantType_ID = 123, Code = "Code1", Name = "ABC", ValidStartDate = DateTime.Now, ValidEndtDate = DateTime.Now}); context.PlantTypes.Add(new PlantType { PlantType_ID = 456, Code = "Code2", Name = "XYZ", ValidStartDate = DateTime.Now, ValidEndtDate = DateTime.Now}); context.SaveChanges(); вар dbRepo = новый EntityRepositoryBase() {}; dbRepo.DataContext = новый GaiaTestDbContext(_options); // Действовать } Но я не могу имитировать реальный dbcontext с помощью dbcontext в памяти. Это показывает, что я не могу присвоить значение dbRepo.DataContext
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Есть ли способ имитировать OR в Java Generics?
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать события очереди Laravel в тестах?
    Anonymous » » в форуме Php
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать события очереди Laravel в тестах?
    Anonymous » » в форуме Php
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать события очереди Laravel в тестах?
    Anonymous » » в форуме Php
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать событие очереди Laravel JobQueued в тесте?
    Anonymous » » в форуме Php
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»