私はそれに続く関数を持ち、古いプロジェクトに単体テストを追加しようとしています。 Iユニットテストでは初心者だ質問は愚かである場合ので、私を許して...ファイルを読み取る静的関数の単体テスト
public static string GetDefaultName(bool isResponsive)
{
//Read web.config file
Configuration configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.HttpContext.Current.Request.ApplicationPath);
if (!isResponsive)
{
if (configuration.AppSettings.Settings.AllKeys.Contains("defaultTheme"))
{
return configuration.AppSettings.Settings["defaultTheme"].Value;
}
else
return "default";
}
else
{
// ...
}
}
そして私は、このようにユニットテストを書くことをしようとしている:
[TestMethod]
public void ReturnDefaulThemeNametIfThemeIsResponsive()
{
var theme = new Theme {isResponsive = true};
var defaultName = Themes.GetDefaultName(theme.isResponsive);
Assert.AreEqual(defaultName, "defaultThemeResponsive");
}
私が何を疑問に思いますこの静的関数をテストする最良の方法であり、web.configファイルを読んだ部分を模擬する方法は?
現在、あなた自身のアクセスはメソッド自体の中で起こるので、 'web.config'の読み物をモックすることはできません。このメソッドをリファクタリングして依存関係をパラメータとして取り入れることを検討します。その後、あなたはそれらをモックすることができます。あなたができる唯一のことは、ユニットテストプロジェクトの 'app.config'ファイルを更新することですが、テストの設定サブシステムを実際にテストしています(これは、すべての目的と目的がアプリケーションの設定サブシステム)。 –