我在我的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
}
//....
}
在此先感謝您的幫助。
編輯:解決方案
以下句法更改修復了問題。
原線路:
mockChartFieldRepository.Setup(x => x.RetrieveChartFieldDepartments(It.IsAny<bool>()))
.Returns(coaDepartments.AsQueryable());
更新線路:
mockChartFieldRepository.Setup(x => x.RetrieveChartFieldDepartments(It.IsAny<bool>()))
.Returns((bool x) => coaDepartments.AsQueryable());
(這是不是在所有從錯誤信息很明顯。)我不認爲你需要lambda;只需添加括號即可。 – TrueWill