HTML5技术

领域驱动设计之单元测试最佳实践(一) - richiezhang(2)

字号+ 作者:H5之家 来源:博客园 2016-05-04 13:00 我要评论( )

1、UserService中的入口: public bool Login(string email, string password){var user = _userRepository.Find(x = x.Email.ToLower() == email.ToLower()).FirstOrDefault();if (user == null){throw new Applic

1、UserService中的入口:

public bool Login(string email, string password) { var user = _userRepository.Find(x => x.Email.ToLower() == email.ToLower()).FirstOrDefault(); if (user == null) { throw new ApplicationServiceException("no such user"); } if (!user.Login(password)) { return false; } _userRepository.Update(user); Context.Commit(); return true; }

第一部分代码我们可以认为通过Email来获取User领域模型,读取到领域模型后调用user.Login()方法。这同样说明了这样一个事实:Service层没有任何业务逻辑,所有的逻辑都应该在Domain。

2、User领域模型中的Login实现:

public bool Login(string password) { Contract.Requires(!password.IsNullOrEmpty(), "password can not be empty"); var hashedPassword = new Password(Password, Salt); if (hashedPassword.IsCorrectPassword(password)) { LastLoginDateTime = DateTime.Now; return true; } return false; }

正如你所见:这些逻辑反应出了一个用户登录的实际逻辑是什么,而这些逻辑全部都应该归属于Domain。

整个方案代码提供下载:https://git.oschina.net/richieyangs/MvcTests.BestPractice.git

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 设计模式(1)单例模式(Singleton) - Fonour

    设计模式(1)单例模式(Singleton) - Fonour

    2017-04-23 12:00

  • 架构设计师能力模型 - BloodyAngel

    架构设计师能力模型 - BloodyAngel

    2017-03-28 11:00

  • 设计模式(0)简单工厂模式 - Fonour

    设计模式(0)简单工厂模式 - Fonour

    2017-03-25 15:01

  • 没有功能需求设计文档?对不起,拒绝开发! - CharlieChu

    没有功能需求设计文档?对不起,拒绝开发! - CharlieChu

    2017-03-16 13:04

网友点评
t