使用 Moq 设置模拟方法时出现无效回调错误

Invalid Callback Error when Setting Up Mocked Method using Moq

我正在测试 class。这个 class 有一个依赖项,我正在使用最新版本的 Moq 进行模拟。我正在模拟的方法具有以下签名。

IQueryable<T> Get<T>(
      Expression<Func<T, bool>> filter = null,
      Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null,
      string property = "")
      where T : BaseEntity;

我是这样嘲笑的

_repositoryMock
                .Setup(_ => _.Get(
                    It.IsAny<Expression<Func<X, bool>>>(),
                    It.IsAny<Func<IQueryable<X>, IOrderedQueryable<X>>>(),
                    It.IsAny<string>()))
                .Returns<X>(_ => Enumerable.Empty<X>().AsQueryable());

当我 运行 这个测试时,我得到了这一行的以下错误。

System.ArgumentException: 'Invalid callback. Setup on method with 3 parameter(s) cannot invoke callback with different number of parameters (1).'

这是怎么回事?

Returns 语句更改为

.Returns(Enumerable.Empty<X>().AsQueryable());

如果您想提供委托,则必须提供所有参数。