Макет IOptionsMonitor - PullRequest
       30

Макет IOptionsMonitor

4 голосов
/ 02 мая 2019

Как я могу сделать экземпляр класса вручную для класса, который требует IOptionsMonitor в конструкторе?

Мой класс

private readonly AuthenticationSettings _authenticationSettings;

public ActiveDirectoryLogic(IOptionsMonitor<AuthenticationSettings> authenticationSettings)
{            
   _authenticationSettings = authenticationSettings.CurrentValue;
}

Мой тест

AuthenticationSettings au = new AuthenticationSettings(){ ... };
var someOptions = Options.Create(new AuthenticationSettings());
var optionMan = new OptionsMonitor(someOptions);  // dont work.           
ActiveDirectoryLogic _SUT = new ActiveDirectoryLogic(au);

Я пытался создать объект IOptionsMonitor вручную, но не могу понять, как.

1 Ответ

4 голосов
/ 02 мая 2019

Вы неправильно вызываете конструктор класса OptionsMonitor<TOptions>.

В этом случае я бы просто издевался над интерфейсом IOptionsMonitor<AuthenticationSettings>

Например, используя Moq

AuthenticationSettings au = new AuthenticationSettings() { ... };
var monitor = Mock.Of<IOptionsMonitor<AuthenticationSettings>>(_ => _.CurrentValue == au);
ActiveDirectoryLogic _SUT = new ActiveDirectoryLogic(monitor);
...