Модульное тестирование Z Расширения Entity Framework Plus

c# entity-framework entity-framework-plus nsubstitute unit-testing

Вопрос

При использовании расширений Z.EntityFramework.Plus я не могу найти способ издеваться / подставлять то, что возвращает контекст, когда используется какое-либо из дополнительных расширений, а не только Future (). Все, что я пытаюсь, выдает исключение NullReferenceException в будущей библиотеке расширений z.

Пример репозитория:

public Task<DocumentDomain> GetDocuments(int id)
{
  var futureQuery1 = _context.ReportTypes.Where(x => x.IsReadOnly).Future();
  var futureQuery2 = _context.Reports.Where(x => x.CreateDate < DateTime.Now.AddDays(-10)).Future();
  var futureQuery3 = _context.Person.DeferredFirstOrDefault(x => x.Id == id).FutureValue();

   return new DocumentDomain(futureQuery1.ToList(), futureQuery2.ToList(), futureQuery3.Value);
}

Единичный тестовый репозиторий:

public Task<DocumentDomain> GetDocuments(int id)
{
  var futureQuery1 = _context.ReportTypes.Where(x => x.IsReadOnly).Future();
  var futureQuery2 = _context.Reports.Where(x => x.CreateDate < DateTime.Now.AddDays(-10)).Future();
  var futureQuery3 = _context.Person.DeferredFirstOrDefault(x => x.Id == id).FutureValue();

   return new DocumentDomain(futureQuery1.ToList(), futureQuery2.ToList(), futureQuery3.Value);
}

Без использования фьючерсов он отлично работает. Я пробовал издеваться над несколькими способами, но всегда получаю сообщение об ошибке. Большую часть времени это исключение «oops Z extends сталкивается с ошибкой».

Я думаю, это потому, что Z-расширения ожидают реального ObjectContext, но не уверены, как это преодолеть. Кто-нибудь сталкивался с подобными проблемами? Кто-нибудь знает какие-либо решения? Благодарю.

Ответ эксперта

Функция Future ожидает реального ObjectContext . Я считаю, что текущий сценарий GetDbContext неудачей при GetDbContext метода GetDbContext поскольку контекст не найден.

Я не знаю об UseMockContext пути, но возможно добавить такой параметр UseMockContext , который разрешит все запросы без их UseMockContext (точно так же, как если бы вы не использовали функцию Future).

Дайте мне знать, добавляя этот вариант, это то, что может решить вашу текущую проблему.

Если это так, я предлагаю вам создать проблему здесь: https://github.com/zzzprojects/EntityFramework-Plus/issues




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему