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?
Assuming that you’re using Moq and that someDataMock is a mocked object, the problem is with the setup. Try this instead…
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.