ASP.NET MVC4 Mock单元测试,该如何解决

ASP.NET MVC4 Mock单元测试
第一次使用mock单元测试,但是总是抛出空引用的异常:请各位大牛们给看看啥问题:
接口文件:
public interface IUserRepository
    {
        IQueryable<User> Users { get; }
        OperateResult SignIn(User user);
    }
实现接口类的文件:
public class UserRepository : IUserRepository
    {
        public OperateResult SignIn(User user)
        {
            var result = new OperateResult
            {
                Success = Users.Any(u => u.UserName == user.UserName && u.Password == user.Password)
            };
            if (!result.Success)
            {
                result.Message = "错误的用户名或密码.";
            }
            return result;
        }
        public IQueryable<User> Users
        {
            get { throw new NotImplementedException(); }
        }
    }

测试方法类:
    [TestClass]
    public class UserTest
    {
        [TestMethod]
        public void UserSingInTest()
        {
            var user1 = new User {UserId = 1, UserName = "jli@synvata.com", Password = "241925"};
            var user2 = new User {UserId = 2, UserName = "junelee1211@qq.com", Password = "000000"};

            var mock = new Mock<IUserRepository>();
            mock.Setup(u => u.Users).Returns(new List<User>
            {
                user1,
                user2
            }.AsQueryable());

            var result1 = mock.Object.SignIn(new User { UserId = 1, UserName = "jli@synvata.com", Password = "241925" });
            var result2 = mock.Object.SignIn(new User { UserId = 2, UserName = "jli", Password = "241925" });
            Assert.IsTrue(result1.Success);
            Assert.IsFalse(result1.Success);
            Assert.AreEqual(string.Empty, result1.Message);
            Assert.AreEqual("错误的用户名或密码.", result2.Message);
        }
    }

运行测试总是会提示:
An exception of type 'System.NullReferenceException' occurred in DBPortal.Tests.dll but was not handled in user code

Additional information: 未将对象引用设置到对象的实例

我猜猜原因可能就是UserRepository 类的Users引起的,可是想不明白的是我已经在测试类中给它添加虚假的值了啊。诸位给指点下是啥原因啊


------解决思路----------------------
扔掉mock,直接写测试不好么?

大不了你为 UserRepository  类先设计一个 AddUser 接口方法,然后在测试代码中把 user1、user2 插入一个对象实例,再两次调用它的 SignIn 方法就好了。

其实用不着 mock,直接写代码按照“真实程序”的代码写测试,效果足够好。