Как я могу построить IOptionsMonitor <T>для тестирования? - PullRequest
0 голосов
/ 04 декабря 2018

Для обычного интерфейса IOptions вы можете вручную создать экземпляр, например этот вопрос SO .

Есть ли эквивалентный способ создания экземпляра IOptionsMonitor без использования DI?

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

хороший ответ от Hananiel

Вот его общая версия:

public class TestOptionsMonitor<T> : IOptionsMonitor<T>
    where T : class, new()
{
    public TestOptionsMonitor(T currentValue)
    {
        CurrentValue = currentValue;
    }

    public T Get(string name)
    {
        return CurrentValue;
    }

    public IDisposable OnChange(Action<T, string> listener)
    {
        throw new NotImplementedException();
    }

    public T CurrentValue { get; }
}

и просто создайте экземпляр с вашим объектом!

0 голосов
/ 11 января 2019

Вы можете сделать что-то вроде ниже и затем использовать это для тестирования:

    public class TestOptionsMonitor : IOptionsMonitor<MyOptions>
    {
        public TestOptionsMonitor(MyOptions currentValue)
        {
            CurrentValue = currentValue;
        }

        public MyOptions Get(string name)
        {
            return CurrentValue;
        }

        public IDisposable OnChange(Action<MyOptions, string> listener)
        {
            throw new NotImplementedException();
        }

        public MyOptions CurrentValue { get; }
    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...