moq测试LINQ哪里查询

我使用EF 4.1构建域模型.我有一个具有Validate(string userCode)方法的Task类,其中我想确保用户代码映射到数据库中的有效用户,因此:

public static bool Validate(string userCode)
{
    IDbSet<User> users = db.Set<User>();
    var results = from u in users
              where u.UserCode.Equals(userCode)
              select u;
    return results.FirstOrDefault() != null;
}

我可以使用Moq来模拟IDbSet没问题.但是遇到麻烦的地方呼叫:

User user = new User { UserCode = "abc" };
IList<User> list = new List<User> { user };
var users = new Mock<IDbSet<User>>();
users.Setup(x => x.Where(It.IsAny<Expression<Func<User, bool>>>())).Returns(list.AsQueryable);

Initialization method JLTi.iRIS3.Tests.TaskTest.SetUp threw exception.
System.NotSupportedException: System.NotSupportedException: Expression 
references a method that does not belong to the mocked object:
x => x.Where<User>(It.IsAny<Expression`1>()).

除了创建一个间接级别(例如,使用ServiceLocator获取运行LINQ的对象,然后模拟该方法)我不能想到如何测试这个,但我想确保没有办法我介绍另一层.而且我可以看到这种LINQ查询需要很频繁,所以服务对象可以迅速地失控.

有可能有一