我正在学习如何编写单元测试并且有点坚持使用 Mocks。我正在使用 Moq 进行模拟。我正在使用 VS 2012 附带的内置测试框架。如果这样更好(并且可以解决我的问题),我可以切换到 NUnit。我有一个工作模式设置单元。我正在测试的方法是重置用户密码。我告诉 Moq 根据我正在测试的方法中调用的唯一代码返回用户列表:
var mock = new Mock<IUnitOfWork>();
mock.Setup(u => u.UserRepository.Get(t => t.PassResetCode.Equals("test1"), null, "")).Returns(
new List<User>
{
new User { UserId = 4, FirstName = "Test4", LastName = "LastName", Email = "test4@test.com", Salt = salt, Password = pass, AccountConfirmed = true, PassResetCode = "test1", PassResetExpire = new Nullable<DateTime>(DateTime.Now.Add(ts)) },
});
在我正在测试的方法中,它调用以下内容:
var users = unitOfWork.UserRepository.Get(u => u.PassResetCode.Equals(code));
据我所知,它没有返回我在此处的测试中创建的用户列表。我是否也需要模拟工作单元类中的存储库?或者只是模拟工作单元界面就足够了?如果有帮助,我可以发布更多代码。