目前,我正在为执行日期时间特定验证的组件编写单元测试。我创造了IDateTimeProvider
接口,用作DateTime.UtcNow
包装器和业务对象使用接口而不是DateTime
直接地。看来 DateTime 有点过载,应该分为一个值和一个从操作系统获取该值的东西。我想知道是否有特殊原因不拥有IDateTimeProvider
(IClock
).NET 中的接口?
简而言之:因为 BCL 的大部分内容并不是为了可测试性而设计的。
就“核心”功能而言,随机数生成也是如此 - 并且许多与 HTTP 相关的类更难伪造:( 至少在这种情况下,引入您自己的时钟接口相当容易。
从好的方面来说,当野田时间 http://noda-time.googlecode.com已准备好用于生产使用,它不仅会提供比 BCL 更好的日期/时间 API - 它还会提供更适合测试的 API :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)