我有一项以以下形式声明的具体服务:
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);
但是我收到:
无法将
转换为 IConfiguration。Mock<IConfiguration>
很高兴您不需要模拟
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。