【问题标题】:Using Web.config file in unit test在单元测试中使用 Web.config 文件
【发布时间】:2018-02-22 13:26:10
【问题描述】:

我需要一点帮助来解决我遇到的问题。

我创建了一个单元测试,我正在尝试测试一个具有使用成员资格功能的方法的类。问题是 Membership 使用我的 web 项目文件 (Web.config) 中的设置,例如 connectString 和其他。

有没有办法配置我的单元测试以从位于我的 Web 项目中的 Web.config 读取规范?我正在使用 VS2017。

提前致谢。

【问题讨论】:

  • 最简单的方法是将您要测试的项目中的 web.cofig 内容复制到单元测试项目的 app.config 中。

标签: c# asp.net-mvc web-config visual-studio-2017 vs-unit-testing-framework


【解决方案1】:

一种可能的解决方案(我更喜欢)是创建一个通用接口来充当配置提供者,并在一个类中实现它,如下所示:

注意:在单独的程序集中创建此接口和类,可以在 Web 应用程序和单元测试项目中使用。

public interface IConfigurationProvider
{
    string GetValue(string key, string valueIfNull = "");
}

using System.Configuration;
public class ConfigurationProvider : IConfigurationProvider
{
    public string GetValue(string key, string valueIfNull = "")
    {
        return (!String.IsNullOrEmpty(ConfigurationManager.AppSettings[key]) 
            ? ConfigurationManager.AppSettings[key] 
            : valueIfNull);
    }
}

在您的 Web 应用程序中使用 ConfigurationProvider 类的实例(使用 DI)。而在您的单元测试项目中,您需要模拟“IConfigurationProvider”类型的对象并调用“GetValue”方法来返回您对特定键的偏好值。

这意味着,您的 Web 应用程序需要使用此提供程序读取配置值,而不是直接从 ConfigurationManager 读取,并且您的单元测试项目需要模拟接口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多