2017-06-07 7 views
0

私はAzureサーバ「East US」で稼働しているクライアントを持っています。開発で問題なく動作するコード(英国のサーバー)は、そのサーバー(東米のサーバー)にはありません。私は問題が私の日付の文字列をUTCの日付の時間に変換することによると信じていますが、私は実際に問題を解決したことを証明するためのテストを書いています。ユニットテストを実行している国のタイムゾーンを模擬してください

私の単体テストが異なるタイムゾーンで実行されているという事実を偽造する方法はありますか?

たとえば、DateTime.Nowは、UKではなく米国東部で時刻を返します。

これは可能ですか?

+3

同様の問題がありました。要するに、我々の解決策はインターフェースを導入することであった。 'IDateTimeProvider'と' DateTime'クラスのラッパーです。 'DateTimeProvider'は' IDateTimeProvider'を実装しています。 'DateTime'クラスが必要なすべてのクラスにコンストラクタを挿入し、あなたのテストに' MockDateTimeProvider:IDateTimeProvider'を使います。 – user3292642

+1

シムを使用することができます - https://docs.microsoft.com/en-us/visualstudio/test/using-shims-to-isolate-your-application-from-other-assemblies-for-unit-testing –

+0

@OndrejSvejdar - ああ、今それは...正確に...私が望んでいた! – Jimmyt1988

答えて

1

CurrentUICultureを設定する必要があると思われます。

https://stackoverflow.com/a/7000587/34092は、これを行う方法を示しています。

これにより、文字列が日付に変換される方法が変更され、その逆もあります。

関連する問題