我有一个使用 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: Unsupported expression: p => (p.UserId == 1)
知道我的测试哪里不正确吗?
最佳答案
假设您正在使用 Moq 并且 someDataMock 是一个模拟对象,那么问题出在设置上。试试这个...
someDataMock.Setup(s => s.GetUser(It.IsAny<Func<User, bool>>()).Returns(userProfile);
这应该可行,但您可能希望根据测试的性质,使模拟在接受的回调方面更具限制性。
关于c# - System.NotSupportedException : Unsupported expression: p => (p. UserProfileId == 1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502239/