如何使用 MSTest 创建并传递 IConfiguration

问题描述 投票:0回答:1

我有一项以以下形式声明的具体服务:

public class ApiDataService:IApiDataService
{
    private IConfiguration configuration;
    public ApiDataService(IConfiguration _configuration)
    {
        configuration = _configuration;
    }......

我正在尝试使用 MsTest 编写一个测试方法来测试其中一个方法,但我在初始化类时遇到问题。作为测试的一部分,我需要从配置文件中获取一个值。

我最初的想法是声明几个模拟。:

private Mock<IConfiguration> _configuration = new Mock<IConfiguration>();
private Mock<IConfigurationSection> _configSection = new Mock<IConfigurationSection>();

ApiDataService _apiDataService { get; set; }

然后在

[TestInitialize]
部分设置值,然后创建新服务。

_apiDataService = new ApiDataService(_configuration);

但是我收到:

无法将

Mock<IConfiguration>
转换为 IConfiguration。

c# moq mstest
1个回答
0
投票

很高兴您不需要模拟

IConfiguration
IConfigurationSection
接口。

您可以创建内存中的配置,如下所示:

IConfiguration configRoot = new ConfigurationBuilder()
    .AddInMemoryCollection(new Dictionary<string, string>
    {
        { "SingleKey", "Value" }, 
        { "ArrayOfValues:0", "Value1" },
        { "ArrayOfValues:1", "Value2" },
        { "ArrayOfValues:2", "Value3" }
    })
    .Build();

您可以将此对象传递给您的

ApiDataService
ctor。

© www.soinside.com 2019 - 2024. All rights reserved.