如何解决此Moq错误?System.Reflection.TargetParameterCountException:参数计数不匹配

Ray*_*ond 6 parameters moq

我在我的nUnit测试用例中使用Moq.

这是我的测试用例的样子:

        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();
Run Code Online (Sandbox Code Playgroud)

这是我的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
    }
    //....
 }
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

编辑:解决方案

语法的以下更改修复了该问题.

原线:

        mockChartFieldRepository.Setup(x => x.RetrieveChartFieldDepartments(It.IsAny<bool>()))
            .Returns(coaDepartments.AsQueryable());
Run Code Online (Sandbox Code Playgroud)

更新后的行:

        mockChartFieldRepository.Setup(x => x.RetrieveChartFieldDepartments(It.IsAny<bool>()))
            .Returns((bool x) => coaDepartments.AsQueryable());
Run Code Online (Sandbox Code Playgroud)

Tru*_*ill 11

将其更改为

.Returns(coaDepartments.AsQueryable());
Run Code Online (Sandbox Code Playgroud)

(从错误消息中可以看出这一点并不明显.)

  • @TrueWill我现在正在看这个错误一段时间没有意识到我忘记了().添加它们解决了我的问题. (2认同)