7

我有一个使用 System.Func 表达式的测试。它应该很简单,但是测试一直失败。

测试:

  [TestMethod]
  public void GetUser()
  {
    var username = "john@resilientplc.com";
    var user = new User() { UserId = 1, Username = username, Password = "123456789" };

    someDataMock.Setup(s => s.GetUser(p => p.UserId == 1)).Returns(user);

    var result = userProfileModel.GetUser(user.UserId);
    Assert.AreEqual(user, result);
  }

实现UserProfileModel

public User GetUser(long userId)
{
  return someDataMock.GetUser(u => u.UserId == UserId);
}

错误:

System.NotSupportedException:不支持的表达式:p =>(p.UserId == 1)

知道我的测试在哪里不正确吗?

4

1 回答 1

13

假设您使用的是 Moq 并且 someDataMock 是一个模拟对象,那么问题出在设置上。试试这个...

someDataMock.Setup(s => s.GetUser(It.IsAny<Func<User, bool>>()).Returns(userProfile);

这应该可行,但您可能希望根据您的测试的性质,使模拟在它接受的回调方面更具限制性。

于 2012-07-16T10:21:24.563 回答