まず第一に、私はこの質問が危険なほど近いことを知っています: C#の単体テストでMapPathを実行する方法
しかし、私はそれが別の解決策を持っていることを望んでいます。私の問題は次のとおりです。
私のコードには、検証が必要なオブジェクトがあります。正しく検証されていることを確認するために、検証方法ごとに単体テストを作成しています。モックデータを作成してオブジェクトにロードし、検証しています。問題は、検証内でエラーが発生すると、エラーコードが割り当てられることです。このエラーコードは、Server.MapPathを使用してxmlファイルからエラーに関する情報を収集するために使用されます。ただし、xmlファイルを取得しようとすると、例外がスローされ、ファイルが見つからないことを意味します。
MapPathは単体テストではなく検証コードに含まれているので、単体テストでパスを認識させるにはどうすればよいですか?この質問は理にかなっていますか?
エラー行(私の検証コードではユニットテストではありません):
XDocument xdoc = XDocument.Load(HttpContext.Current.Server.MapPath("App_Data/ErrorCodes.xml"));
簡略化:単体テストは、Server.MapPathを呼び出すプログラム内のメソッドを呼び出しますが、このメソッドは失敗します。