C# Moq不返回我设置的值

C# Moq不返回我设置的值,c#,linq-to-entities,moq,C#,Linq To Entities,Moq,我是新手。我正在尝试将存储库设置为在调用时返回值: 我的测试方法: _userServiceMock.Setup(m => m.GetUserIDByUserName(It.IsAny<string>())).Returns(2); _bidRepositoryMock.Setup(m => m.Match(It.IsAny<Func<IQueryable<Bid>, object>>(),

我是新手。我正在尝试将存储库设置为在调用时返回值:

我的测试方法:

 _userServiceMock.Setup(m => m.GetUserIDByUserName(It.IsAny<string>())).Returns(2);
 _bidRepositoryMock.Setup(m => m.Match(It.IsAny<Func<IQueryable<Bid>, object>>(),
                        It.IsAny<Expression<Func<Bid, object>>[]>())).Returns(new Bid{UserId = 2});
 var service = SetupService();
 var result = service.GetOwnBid(1, "testuser");
BidRepository方法匹配如下所示:

  var bid = _bidRepository.Match(userBid => userBid.SingleOrDefault(b => b.ID == id),
                b => b.UserProfile,
                b => b.Task.UserProfile);
TResult Match<TResult>(Func<IQueryable<T>, TResult> query, params Expression<Func<T, object>>[] includes);
TResult匹配(Func查询,参数表达式[]包括);

尝试将此代码从
It.IsAny()
更改为
It.IsAny()

\u bidRepositoryMock.Setup(m=>m.Match(It.IsAny(),
返回(新的出价{UserId=2});

因为您的方法在查询中返回
TResult
类型,所以它将是
Bid
类型。

此方法将返回什么类型
userBid.SingleOrDefault(b=>b.ID==ID)
?哦。这可能会返回一个IQueryable而不是出价,我想。但为什么Moq会在意呢?我不太明白……我的家人刚到家,我得照顾两个孩子。我明天早上第一件事就去看看。非常感谢。
_bidRepositoryMock.Setup(m => m.Match(It.IsAny<Func<IQueryable<Bid>, Bid>>(),
                        It.IsAny<Expression<Func<Bid, object>>[]>())).Returns(new Bid{UserId = 2});