【问题标题】:Unit test for .NetCore startup configuration fails.Net Core 启动配置的单元测试失败
【发布时间】:2020-08-03 10:14:51
【问题描述】:

我有一个使用 .NetCore 创建的 Windows 服务应用程序。 我想为服务方法创建一些单元测试。

启动类是这样的

public class Startup
{
    public static IConfiguration Configuration;

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }
    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
    }
}

需要测试的类

public class ModelConsumer : IModelConsumer
{        
    private readonly IProcessHandler _processHandler;

    public ModelConsumer(IIProcessHandler processHandler)
    {
        _processHandler = processHandler;
    }

    public void OnMessageReceived(ModelDto model)
    {
        var exportFolder = Startup.Configuration["ExportFolder"];           
        
       // do actions
    }
}

测试类

[TestClass]
public class ModelConsumerTests
{
    [TestMethod]
    public void OnMessageReceived()
    {
        var processHandler = new Mock<IProcessHandler>();
        var modelConsumer = new ModelConsumer(processHandler.Object);

        var config = InitConfiguration();
        var _exportFolder = config["ExportFolder"];

        modelConsumer.OnMessageReceived(new ModelDto());

        // verify mock call actions
    }

    public static IConfiguration InitConfiguration()
    {
        var config = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build();
        return config;
    }
}

当我运行测试方法时,我收到以下错误

配置中缺少一些东西,所以测试可以成功运行吗?

【问题讨论】:

  • 我会说你应该在你的类中注入IConfiguration(或者更好地创建和使用包含相应设置部分的特殊类)而不是使用Startup.Configuration
  • 你可以使用MemoryConfigurationSource

标签: c# unit-testing .net-core


【解决方案1】:

Test 项目的 bin/ 文件夹中需要 appsettings.json。因此,您必须将其复制到测试项目中/创建一个新项目,并确保将其复制到构建时的输出中。

【讨论】:

    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多