gpt4 book ai didi

c# - 为什么.NET 中没有 IDateTimeProvider 而 DateTime 有 Now getter?

转载 作者:太空狗 更新时间:2023-10-29 20:18:41 24 4
gpt4 key购买 nike

目前我正在为一个组件编写一个单元测试,该组件执行特定于日期时间的验证。我创建了 IDateTimeProvider 接口(interface),用作 DateTime.UtcNow 包装器,业务对象直接使用接口(interface)而不是 DateTime。似乎 DateTime 有点过载,应该分成一个值和一个从操作系统获取该值的东西。我想知道在 .NET 中是否有不使用 IDateTimeProvider (IClock) 接口(interface)的特殊原因?

最佳答案

简单地说:因为 BCL 的很大一部分并不是为可测试性而设计的。

就“核心”功能而言,随机数生成也是如此 - 许多与 HTTP 相关的类伪造起来更糟糕 :( 至少在这种情况下,引入你自己的时钟相当容易界面。

从好的方面来说,当Noda Time已准备好用于生产,它不仅会提供比 BCL 更好的日期/时间 API - 它还会提供对测试更友好的 API :)

关于c# - 为什么.NET 中没有 IDateTimeProvider 而 DateTime 有 Now getter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3131702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com