私のMVCWebAPIアプリケーションには、アプリケーションが構成値に使用するカスタム構成セクションがあります。
GetSection
web.configファイルに入力されたカスタム構成セクションの値が正しく、正しく読み取ることができるかどうかをテストしたいと思います。まったく同じ値を持つnunitの別の構成ファイルを作成せずにこれをテストする方法はありますか?
私のMVCWebAPIアプリケーションには、アプリケーションが構成値に使用するカスタム構成セクションがあります。
GetSection
web.configファイルに入力されたカスタム構成セクションの値が正しく、正しく読み取ることができるかどうかをテストしたいと思います。まったく同じ値を持つnunitの別の構成ファイルを作成せずにこれをテストする方法はありますか?
まったく同じ値を持つ nunit の別の構成ファイルを作成せずにこれをテストする方法はありますか?
はい、次のように実行できます。
Configuration OpenWebConfiguration(string configurationFilePath)
{
var configurationFileInfo = new FileInfo(configurationFilePath);
var vdm = new VirtualDirectoryMapping(configurationFileInfo.DirectoryName, true, configurationFileInfo.Name);
var wcfm = new WebConfigurationFileMap();
wcfm.VirtualDirectories.Add("/", vdm);
return WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/");
}
...
var c = OpenWebConfiguration(pathToWebConfigFile);
var section = c.GetSection(sectionName);
... etc ...
まったく同じ値を持つ nunit の別の構成ファイルを作成せずにこれをテストする方法はありますか?
いいえ、ありません。カスタム セクションをテストするには、構成ファイルが必要です。そのために、単体テスト プロジェクトほど適した場所はありません。完璧な場所のようです。
たとえば、ソリューションに次のプロジェクトを含めることができます。
app.config
MyApp.Configuration.Tests (カスタム構成セクションをテストできるファイルを含む)受け入れられた回答に加えて、別の構成ファイルをテスト プロジェクトに追加せずにメインの構成ファイルをテスト ファイルと同期する方法についての回答を探している場合に備えて、適切な方法を説明するリンクを次に示します。元の app/web.config をリンクとしてテスト プロジェクトに追加します。基本的に、単一の構成ファイルを扱っています。 このブログでは、 TestConigurationSectionと ExeConfigurationFileMapを使用した代替アプローチについて説明して います (同等のWebConfigurationFileMapを使用できます) 。