gpt4 book ai didi

dependency-injection - 在 xunit 中实例化 IOptions<>

转载 作者:行者123 更新时间:2023-12-04 16:25:42 24 4
gpt4 key购买 nike

我正在尝试为一个类(在 .net Core 项目中)编写一个 xunit 测试,它看起来像:

public Class FoodStore:IFoodStore
{
FoodList foodItems;

public FoodStore(IOptions<FoodList> foodItems)
{
this.foodItems = foodItems;
}

public bool IsFoodItemPresentInList(string foodItemId)
{
//Logic to search from Food List
}
}`

注: FoodList实际上是一个 json 文件,包含数据,在 Startup 类中加载和配置。

如何使用适当的依赖注入(inject)编写 xunit 测试来测试 IsFoodItemPresentInList方法 ?

最佳答案

我遇到了类似的问题(使用xUnit),经过一番努力,我解决了。

答案太晚了,但应该对其他人有所帮助。

对于您的问题:

public Class FoodStoreTest
{
private readonly IConfigurationRoot _configuration;
private readonly IServiceProvider _serviceProvider;

public FoodStoreTest(){
// read Json
var configBuilder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
_configuration = configBuilder.Build();

// SetUp DI
var services = new ServiceCollection();
services.AddOptions(); // this statement is required if you wanna use IOption Pattern.

services.Configure<YuntongxunOptions>(_configuration.GetSection("yuntongxun"));
_serviceProvider = services.BuildServiceProvider();
}

[Fact]
public void GetFootItemOption()
{
IOption<FoodList> optionAccessor = _serviceProvider.GetService<IOptions<FoodList>>();
FoodList footListOptions = optionAccessor.value;
Assert.NotNull(footListOptions)
// ...
}
}

此外,您应该将“appSettings.json”复制到您的项目根文件夹。

关于dependency-injection - 在 xunit 中实例化 IOptions<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35865790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com