System.NotSupportedException: Unsupported expression: p => (p.UserProfileId == 1)

╄→尐↘猪︶ㄣ 提交于 2019-12-12 10:03:15

问题


I have a test that uses System.Func expressions. It should be pretty straight forward, but the test keeps on failing.

Test:

  [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);
  }

Implementation UserProfileModel:

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

Error:

System.NotSupportedException: Unsupported expression: p => (p.UserId == 1)

Any idea where my test is incorrect?


回答1:


Assuming that you're using Moq and that someDataMock is a mocked object, the problem is with the setup. Try this instead...

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

That should work, but you might want to make the mock a little bit more restrictive in what callbacks it accepts, depending on the nature of your test.



来源:https://stackoverflow.com/questions/11502239/system-notsupportedexception-unsupported-expression-p-p-userprofileid-1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!