次のコードを単体テストする方法を理解しようとしています。最初はMoqを使ってすべてを模倣しようとしていましたが、封印されたクラスを模擬することはできません。私はインターフェイスを使用して実装(設定)への呼び出しを抽象化する必要があることを知っていますか?しかし、私はそれがすべて正しく動作するように見えることはできません。ユニットテストはどのように行うのですか.Netコード(リファクタリングが許可されています)
コードを変更することはできますが、魅力的な理由を提示できない限り、メソッドを静的に保つことをお勧めします。インターフェイスを追加したり、必要なシームを作成したりすることができます。また、GetConnStringByName()をリファクタリングして、ConnectionStringSettingsの代わりに関連する文字列を返すこともできます。
思考?
namespace Stackoverflow.Rocks
{
/// <summary>
/// Utility class for progmattically selecting values from the Web.config file.
/// </summary>
public class WebConfigStrings
{
//private static Configuration myConfiguration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
/// <summary>
/// Retrieves the desired connection string value based upon the target name.
/// </summary>
/// <param name="connectionStringName">The target connection string referenced in the Web.Config</param>
/// <returns>The value specified in the Web.Config by your connectionStringName</returns>
public static ConnectionStringSettings GetConnStringByName(string connectionStringName)
{
Configuration rootWebConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
ConnectionStringSettings connString;
connString = rootWebConfig.ConnectionStrings.ConnectionStrings[connectionStringName];
return connString;
}
/// <summary>
/// Retrieves the desired application string value based upon the target name.
/// </summary>
/// <param name="applicationStringName">The target application string referenced in the Web.Config</param>
/// <returns>The value specified in the Web.Config by your applicationStringName</returns>
public static string GetAppStringByName(string applicationStringName)
{
string appString = "";
appString = ConfigurationManager.AppSettings[applicationStringName];
return appString;
}
}
}
+1名前空間。 –