0

Moqは初めてです。呼び出されたときに値を返すようにリポジトリをセットアップしようとしています:

私のテスト方法:

 _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");

userServiceMock は本来どおり 2 を返しますが、bidRepositoryMock は null を返します。

私が単体テストしているメソッドは次のようになります。

  var bid = _bidRepository.Match(userBid => userBid.SingleOrDefault(b => b.ID == id),
                b => b.UserProfile,
                b => b.Task.UserProfile);

BidRepository メソッドの一致は次のようになります。

TResult Match<TResult>(Func<IQueryable<T>, TResult> query, params Expression<Func<T, object>>[] includes);
4

1 に答える 1

1

このコードを から に変更してみてIt.IsAny<Func<IQueryable<Bid>, object>>()くださいIt.IsAny<Func<IQueryable<Bid>, Bid>>()

_bidRepositoryMock.Setup(m => m.Match(It.IsAny<Func<IQueryable<Bid>, Bid>>(),
                        It.IsAny<Expression<Func<Bid, object>>[]>())).Returns(new Bid{UserId = 2});

TResultメソッドはクエリで型を返すため、それは型になりますBid

于 2013-09-20T17:55:37.077 に答える