단위 테스트 Z Entity Framework Plus 확장

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

문제

Z.EntityFramework.Plus 확장을 사용할 때, Future ()뿐 아니라 플러스 (+) 확장이 사용되면 컨텍스트가 반환하는 것을 조롱하거나 대체 할 방법을 찾을 수 없습니다. 내가 시도한 모든 것은 z 확장 기능 라이브러리 내에서 NullReferenceException을 발생시킵니다.

저장소 예 :

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 extensions에 오류가 발생했습니다"예외입니다.

나는 Z 확장이 실제 ObjectContext를 기대하고 있지만이를 극복 할 방법이 확실하지 않기 때문에 생각하고있다. 비슷한 문제를 경험 한 사람이 있습니까? 누구든지 어떤 해결책을 알고 있습니까? 감사.

전문가 답변

미래 기능은 실제 ObjectContext 기대하고 있습니다. 컨텍스트를 찾을 수 없기 때문에 GetDbContext 메서드를 호출하면 현재 시나리오가 실패합니다.

나는 해결책을 모르고 있지만 일괄 처리하지 않고 모든 쿼리를 해결할 수있는 UseMockContext 와 같은 옵션을 추가하는 것이 가능할 수도 있습니다 (마치 미래의 기능을 사용하지 않는 것처럼).

이 옵션을 추가하면 현재의 문제를 해결할 수있는 것이 있는지 알려주십시오.

이 경우 https://github.com/zzzprojects/EntityFramework-Plus/issues 에서 문제를 만드는 것이 좋습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.