特定のSPTimeZoneインスタンスを作成または取得する
2023-11-07 19:14:08
質問
の特定のインスタンスを作成する最も便利な方法は何ですか?
Microsoft.SharePoint.SPTimeZone
を次のようにします。
SPTimeZone utc = SPRegionalSettings.GlobalTimeZones
.OfType<SPTimeZone>()
.FirstOrDefault(tz => tz.Information.Bias == 0
&& tz.Information.DaylightBias == 0);
このハックがベストでしょうか...。
私はユニットテストのためにコードのこの部分をモックし、常にUTCを返すように強制したいので、これは特に私にとっての問題です。プロパティ
GlobalTimeZones
に依存しているようです。
HttpContext.Current
または実際のリクエストに依存しているようです - 私のUnit Testsにはない前提条件ですが...。
N.B.: 私は
System.TimeZoneInfo
があることは知っていますが、サードパーティのアセンブリによって、SPTimeZoneを使わざるを得ないのです ...
どのように解決するのですか?
この議論を止めるために、私は最終的に自分でこの質問に答えることにしました。
コメントには本当に役に立つ解決策がいくつかあり、この短い答えに集めたいと思います。
- ファサード/アダプターを導入する
-
MS Fakesや他のフレームワークを
- SPTimeZone への偽のアクセス
- 偽の HttpContext を作成する
- 上の質問で説明されたハックと一緒に行く...
私自身は、MSFakes を使用してサードパーティーの呼び出し全体をシムし (とにかくその動作をテストしたくなかったので)、私のメソッドで使用する SPTimeZone のすべてのプロパティをシムすることに決めました。内部)API を維持しなければならなかったので、アダプターを導入することは残念ながら私にとって選択肢ではありませんでした。
関連
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] Typeから新しいオブジェクトのインスタンスを作成する方法
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
-
[解決済み] Spring Dataのリポジトリをテストするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】Linq 構文 - 複数列の選択
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する