2017-04-18 2 views
1

AutoMapper IQueryable 확장 ProjectTo를 사용하여 데이터를 선택하고 있습니다. 이 확장 메서드를 사용하는이 메서드의 단위 테스트를 작성할 때이 예외가 발생합니다.AutoMapper ProjectTo 확장 적어도 하나의 개체가 IComparable을 구현해야합니다.

적어도 하나의 개체는 IComparable을 구현해야합니다.

또한 ProjectTo 확장에 사용되는 유형의 인터페이스를 구현하려고했지만 동일한 예외가 발생했습니다. NOLOCK()가

static List<T> NoLock<T>(this IQueryable<T> query) 
{ 
    var txn = new System.Transactions.TransactionScope(TransactionScopeOption.RequiresNew, 
      new TransactionOptions 
      { 
       IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted 
      })) 
     { 
      List<T> toReturn = query.ToList(); 
      txn.Complete(); 
      return toReturn; 
     } 
} 

freePacks = packageQuery.ProjectTo<PackageDTO>(); 

return new PackageQueryResult 
{ 
    query.OldestPacks 
     ? freePacks.OrderBy(p => new { p.ProdDt, p.Cert }).NoLock() 
     : freePacks.OrderByDescending(p => new { p.ProdDt, p.Cert }).NoLock() 
}; 

입니다

어떤 방법이 있나요 : 단위 테스트에서

내가 EntityFramework DbContext 여기

을 조롱하기위한 MOQ를 사용 예외 반환 코드입니다 이 문제를 어떻게 해결할 수 있습니까?

덕분에 어떤 조언

답변

0

위해 나는 문제가 OrderBy(p => new { p.ProdDt, p.Cert })에 의해 발생합니다 생각합니다. 작성중인 임의의 오브젝트는 IComparable을 구현하지 않으므로 OrderBy가 작동하지 않습니다.

query.OldestPacks 
    ? freePacks.OrderBy(p => p.ProdDt).ThenBy(p => p.Cert).NoLock() 
    : freePacks.OrderByDescending(p => p.ProdDt).ThenByDescending(p => p.Cert).NoLock(); 
+0

덕분에 많은 : 여러 기준으로 정렬해야하는 경우

ThenBy 방법을 사용합니다! 이제 작동 중입니다. –

관련 문제