コードが結合されたときに作成されるハード依存関係をラップする nuget パッケージ、またはその他の「標準」はありますDateTime.Now
か?
自分で書く前に、これについてのガイダンスを求めています。そうするのは簡単ではありますが、ある程度の標準として既に存在するものを使用したいと思います。
コードが結合されたときに作成されるハード依存関係をラップする nuget パッケージ、またはその他の「標準」はありますDateTime.Now
か?
自分で書く前に、これについてのガイダンスを求めています。そうするのは簡単ではありますが、ある程度の標準として既に存在するものを使用したいと思います。
単一のインターフェースとおそらく2つの実装(「システム」クロックとテスト用の偽物)など、非常に些細なことのためのナゲットパッケージがあるとは思えません。
これらのいずれかを自分で行っている場合は、時計がではなく を返すようにするか、少なくともラップするようにすることを強く検討します...発生するのを待っている問題です...DateTimeOffset
DateTime
DateTime.UtcNow
DateTime.Now
ただし、野田タイムには、これらすべてがすぐに使える状態で含まれています。この理由だけで、おそらく野田時間全体を必要としないでしょう...
(Noda Time nuget パッケージがありますが、それは間違いなくプレリリースです。ある時点で 0.2 バージョンに更新する必要がありますが、まだv1 レベルではありません。しかし、そこに到達する...)
依存関係を表現するための非常に安価で陽気な方法が必要な場合は、通常依存関係を表現する場所でいつでもFunc<DateTime>
orを使用できます。Func<DateTimeOffset>
ただし、インターフェイスのアプローチはよりクリーンです:)
これを行うナゲットパッケージは知りません。この問題に遭遇したとき、次のような独自のタイプを作成しました。
public static class SystemTime
{
public static Func<DateTime> Now = () => DateTime.Now;
}
そうすれば、単体テストで Now の機能を簡単に変更して、任意の DateTime を返すことができます。