2011-09-19 24 views
5

C#, EntityFramework 4 ve Moq 4 ile birlikte .net 4 kullanıyorum. UnitOfWork, bir Deposu ve son olarak bir yöntem çağrısı ile alay etmeye çalışıyorum.Unitofwork Kullanıcı Deposu ile Sorun Giderme Lambda

  T GetFirst(Expression<Func<T, bool>> query = null, 
     Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null); 

CField: Burada

 var unitOfWorkMock = new Mock<UnitOfWork>(); 
     var cFieldRepositoryMock = new Mock<IRepository<CField>>(); 

     System.Linq.Expressions.Expression<Func<CField, bool>> query = (x) => x.CID == c && x.FID == parentFID; 

     cFieldRepositoryMock.Setup(x => x.GetFirst(query)); 

GetFirst için yöntem İmza ile ben sorun yaşıyorum kodudur I: Ne olmasını bekliyoruz ne

public class CField 
{ 
    public CField() 
    { 
     //do stuff 
    } 
    public int ID { get; set; } 
    public int FID { get; set; } 
    public int CID { get; set; } 
} 

Ben cFieldRepositoryMock'ın GetFirst yöntemimi çağıracağımı bekliyorum, mat olacak h Lambda ifadesi, Kurulumda tanımlanmış olan I ifadesine karşı.

Neler Oluyor: Ben Kur atama bir derleyici hatası alıyorum: Ben açıkça yanlış bir şey yapıyorum

"Bir İfade ağacı isteğe bağlı argümanları kullanan bir arama veya çağırmayı içeremez", ben sadece ne olduğundan emin değilim. Herhangi bir tavsiye takdir edilir, ben ünite testi için oldukça yeni.

Teşekkürler! AFrieze

+0

sen gönderir misiniz:

(Carsten zaten önerildiği gibi) It.IsAny kullanmak düşünün böyle şeyler UnitTest için CField ve getfirst() yönteminin imzası ise beyan? – David

+0

Merhaba David, istenen bilgileri ekledim. Tüm CField sınıfını yayınlayamıyorum, böylece ilgili alanları doğru tür ve erişilebilirlik düzeyleriyle paylaştım. – AFrieze

+2

orderBy-Argument (It.IsAny <...> veya null ile) için bir argüman eklemeyi denediniz mi? Tam olarak bilmiyorum ama bence İfade'nin kendisini kullanıyor ve bence * tüm * Argümanlar burada sağlamanız gerekiyor. – Carsten

cevap

8

alıyorsanız eror aslında görünüyor bir limitation of expressions:

cFieldRepositoryMock.Setup(x => x.GetFirst(query, It.IsAny<Func<IQueryable<CField>, IOrderedQueryable<CField>>>())); 
İlgili konular