2011-07-12 19 views
6

Benim nUnit test durumlarda Moq kullanıyorum. Yardımlarınız için şimdidenBu Hata hatasını nasıl çözebilirim? System.Reflection.TargetParameterCountException: Parametre sayısı uyuşmuyor

public class ChartFieldDomainService : IChartFieldDomainService 
{ 
    private IChartFieldRepository _chartFieldRepository = null; 

    public ChartFieldDomainService(IChartFieldRepository repository) 
    { 
     _chartFieldRepository = repository; 
    } 

    public virtual IQueryable<ChartFieldDepartment> RetrieveChartFieldDepartments() 
    { 
     return _chartFieldRepository.RetrieveChartFieldDepartments(true); // always refresh, get latest 
    } 
    //.... 
} 

Teşekkür: Burada

 IList<ChartFieldDepartment> coaDepartments = new List<ChartFieldDepartment>() { 
       new ChartFieldDepartment { ChartFieldKey="1000", Description="Corporate Allocation"}, 
       new ChartFieldDepartment { ChartFieldKey="1010", Description="Contribution to Capital"} 
     }; 

     Mock<IChartFieldRepository> mockChartFieldRepository = new Mock<IChartFieldRepository>(); 
     mockChartFieldRepository.Setup(x => x.RetrieveChartFieldDepartments(It.IsAny<bool>())).Returns(coaDepartments.AsQueryable); 

     ChartFieldDomainService chartFieldDomainService = new ChartFieldDomainService(mockChartFieldRepository.Object); 

     // this line fails! I get System.Reflection.TargetParameterCountException : Parameter count mismatch 
     IQueryable<ChartFieldDepartment> departments = chartFieldDomainService.RetrieveChartFieldDepartments(); 

benim ChartFieldDomainService:

İşte benim test durumu böyle görünüyor.

DÜZENLEME: ÇÖZÜM

sözdiziminde aşağıdaki değişiklik sorunu düzeltildi.

Orjinal Hattı:

 mockChartFieldRepository.Setup(x => x.RetrieveChartFieldDepartments(It.IsAny<bool>())) 
      .Returns(coaDepartments.AsQueryable()); 

Güncelleme Hattı:

 mockChartFieldRepository.Setup(x => x.RetrieveChartFieldDepartments(It.IsAny<bool>())) 
      .Returns((bool x) => coaDepartments.AsQueryable()); 
+0

(hata mesajından hiç açık değildir.) Lambdaya ihtiyacın olduğunu düşünmüyorum; sadece parantezleri ekleyin. – TrueWill

cevap

11

Değişim o

.Returns(coaDepartments.AsQueryable()); 

için

+1

Bu, sorunlara neden olan şeydir. lambda (bool x) => coaDepartments.AsQueryable() eklenmesi, parametre uyumsuzluğunu giderdi. – Raymond

+1

@Raymond: Tek yapmamız gereken orijinal mesajınız. İlk örnek, '.Returns (coaDepartments.AsQueryable)' işlevini gösterir. Testte, parantez olmadan çalışmayacağını, ancak parantez ile çalışacağını buldum. – TrueWill

+2

@TrueWill Bir süredir bu hatayı inceliyordum, farkında olmadan anladım(). Onları eklemek benim problemimi çözdü. – Andy

İlgili konular