【问题标题】:How to Mock config file in .Net Core with xUnit如何使用 xUnit 在 .Net Core 中模拟配置文件
【发布时间】:2020-01-07 04:29:51
【问题描述】:

我想模拟 .NET Core 中的配置文件值。

我正在使用 xUnit 进行单元测试。我正在使用应用程序洞察力。

我使用配置文件进行配置。现在我想在我的单元测试用例中模拟那个 .cs 配置文件。

var configurationPackage = statelessServiceContext.CodePackageActivationContext.GetConfigurationPackageObject("Config");
var appInsightsSection = configurationPackage.Settings.Sections["AppInsightsConfig"];
var appInsightsInstrumentationKey = appInsightsSection.Parameters["AppInsights_InstrumentationKey"].Value;

var configurationPackage 即将在测试中null

所以我想模拟一下

statelessServiceContext.CodePackageActivationContext.GetConfigurationPackageObject("Config")

【问题讨论】:

  • 包括您如何尝试对此进行测试。目前没有足够的上下文能够为您提供有用的反馈。
  • 什么是statelessServiceContext?也许你可以解决它,或者它的属性CodePackageActivationContext 使用依赖注入?然后,您可以在初始化期间为单元测试注册替代实现/配置。

标签: c# unit-testing azure-service-fabric xunit.net


【解决方案1】:

您可以通过使用OSS/Nuget 包“ServiceFabric.Mocks”来做到这一点。

例如,检查this 单元测试。

相关代码:

using static ServiceFabric.Mocks.MockConfigurationPackage;
[..]

//build ConfigurationSectionCollection
var configSections = new ConfigurationSectionCollection();
//Build ConfigurationSettings
var configSettings = CreateConfigurationSettings(configSections);
//add one ConfigurationSection
ConfigurationSection configSection = CreateConfigurationSection("AppInsightsConfig");
configSections.Add(configSection);
//add one Parameters entry
ConfigurationProperty parameter = CreateConfigurationSectionParameters("AppInsights_InstrumentationKey", "some value");
configSection.Parameters.Add(parameter);
//Build ConfigurationPackage
ConfigurationPackage configPackage = CreateConfigurationPackage(configSettings, nameof(configPackage.Path));
var context = new MockCodePackageActivationContext(
                "fabric:/MockApp",
                "MockAppType",
                "Code",
                "1.0.0.0",
                Guid.NewGuid().ToString(),
                @"C:\logDirectory",
                @"C:\tempDirectory",
                @"C:\workDirectory",
                "ServiceManifestName",
                "1.0.0.0")
            {
                ConfigurationPackage = configPackage
            };
[..]
//pass the `MockCodePackageActivationContext` to the Service constructor.

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2017-11-29
    • 2021-03-25
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多