【发布时间】:2012-07-16 10:10:47
【问题描述】:
我有一个使用 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)
知道我的测试在哪里不正确吗?
【问题讨论】:
-
EF 还是 Linq2SQL?如果有的话,这将无法通过
IQueryable工作。 -
someDataMock的类型是什么?如果是UserProfileModel,那么查看Setup中调用的参数与参数类型... -
@leppie 它看起来像是由 Moq 库创建的模拟对象。
-
什么是 UserProfileId?它似乎没有在任何地方定义。
-
是的,我用它来创建起订量。 @leppie 我正在使用 EF。我几乎可以肯定它在代码的正常执行期间工作。在测试中不起作用
标签: c# asp.net-mvc-3 unit-testing moq