相关疑难解决方法(0)

即使GetSection正在运行,ServiceCollection也会为IOptions返回null

我在手动构造一个时遇到了麻烦IServiceProvider,它将允许我的单元测试使用它来引入共享的测试配置GetService<IOptions<MyOptions>>

我创建了一些单元测试来说明我的问题,如果可以用于回答问题,也可以在此处找到该代码的存储库。

JSON

{
  "Test": {
    "ItemOne":  "yes"
  }
}
Run Code Online (Sandbox Code Playgroud)

期权类别

public class TestOptions
{
    public string ItemOne { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

测试

这些测试都失败了,ConfigureWithBindMethod并且ConfigureWithBindMethodSectionIsAvailable合格了。因此,据我所知,该部分正按预期从JSON文件中使用。

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void ConfigureWithoutBindMethod()
    {
        var collection = new ServiceCollection();

        var config = new ConfigurationBuilder()
            .AddJsonFile("test.json", optional: false)
            .Build();

        collection.Configure<TestOptions>(config.GetSection("Test"));

        var services = collection.BuildServiceProvider();

        var options = services.GetService<IOptions<TestOptions>>();

        Assert.IsNotNull(options);
    }

    [TestMethod]
    public void ConfigureWithBindMethod()
    {
        var collection = new …
Run Code Online (Sandbox Code Playgroud)

.net .net-core

4
推荐指数
1
解决办法
1697
查看次数

标签 统计

.net ×1

.net-core ×1