System.NotSupportedException при вызове Setup () в Moq - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь настроить метод OnChange в IOptionsMonitor из asp. net ядра. Но для меня не очевидно, почему Setup () не работает. Кстати, я видел подобные примеры здесь System.NotSupportedException: неподдерживаемое выражение: p => (p.UserProfileId == 1) И у меня почти все то же самое. В чем причина ошибки?

Код выполнения:

var optionMonitorMock = new Mock<IOptionsMonitor<MyConfig>>();

optionMonitorMock
    .Setup(mock => mock.OnChange(It.IsAny<Action<MyConfig>>()));

Код выполняется с исключением:

System.NotSupportedException. Неподдерживаемое выражение: mock => mock.OnChange (It.IsAny > ()) Методы расширения (здесь: OptionsMonitorExtensions.OnChange) нельзя использовать в выражениях настройки / проверки.

Интерфейс asp. net:

public interface IOptionsMonitor<out TOptions>
{
    TOptions CurrentValue { get; }
    TOptions Get(string name);
    IDisposable OnChange(Action<TOptions, string> listener);
}

Модель:

public class MyConfig
{
    public int Id { get; set; }
    public string Options { get; set; }
}

1 Ответ

0 голосов
/ 19 февраля 2020

Интерфейс предоставляет только IDisposable OnChange(Action<TOptions, string> listener);. Ваше исключение говорит о том, что

Методы расширения (здесь: OptionsMonitorExtensions.OnChange) нельзя использовать в выражениях настройки / проверки.

Поэтому вам придется использовать программу установки с этим методом.

optionMonitorMock
    .Setup(mock => mock.OnChange(It.IsAny<Action<MyConfig,string>>()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...