使用 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());
如果您想提供委托,则必须提供所有参数。
我正在测试 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());
如果您想提供委托,则必须提供所有参数。