gpt4 book ai didi

c# - 我将如何对这个 .Net 代码进行单元测试(允许重构)

转载 作者:行者123 更新时间:2023-11-30 17:19:45 25 4
gpt4 key购买 nike

一段时间以来,我一直在转动轮子,试图弄清楚如何对以下代码进行单元测试。起初我打算使用 Moq 来模拟所有内容,但它不包括模拟密封类的能力。我知道我需要使用接口(interface)抽象出对实现(配置)的调用?但我似乎无法使一切正常。

代码可以更改,但我更愿意将方法保持静态,除非您能提出令人信服的理由不这样做。您可以添加接口(interface)或创建任何需要的接缝。此外,可以重构 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;
}

}
}

最佳答案

重构您的类以使用 System.Web.Abstractions 中定义的新类型.这个程序集定义了可模拟的类型,这些类型包装了 asp.net 围绕其构建的核心(主要是静态或密封的)类型。这将允许您在测试中使用模拟切换出真正的运行时类型。

关于c# - 我将如何对这个 .Net 代码进行单元测试(允许重构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4626143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com