2011-07-12 16 views
6

私はnUnitのテストケースでMoqを使用しています。ここでこのMoqエラーを解決するにはどうすればよいですか? System.Reflection.TargetParameterCountException:パラメータの数の不一致

は私のテストケースは次のようになります。ここでは

 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(); 

ChartFieldDomainServiceです:助けを事前に

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 
    } 
    //.... 
} 

感謝。

EDIT:SOLUTION

構文を次のように変更が問題を修正しました。

オリジナルライン:

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

更新ライン:

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

(エラーメッセージからは全く明らかにされていません。)ラムダが必要だとは思わない。単にかっこを追加してください。 – TrueWill

答えて

11

変更それ

.Returns(coaDepartments.AsQueryable()); 

+1

これが最初に問題を引き起こしている原因です。ラムダ(bool x)=> coaDepartments.AsQueryable()を追加すると、パラメータの不一致が修正されました。 – Raymond

+1

@レイモンド:私たちはあなたのオリジナルの投稿です。最初の例は、 '.Returns(coaDepartments.AsQueryable)'を示しています。テストでは、かっこなしで実行されないことがわかりましたが、かっこで実行されます。 – TrueWill

+2

@トルー私はこのエラーをしばらく見ていましたが、私は()を忘れていました。それらを追加すると私の問題が解決しました。 – Andy

関連する問題