Как я могу модульно протестировать метод, который идет к статическому методу расширения? - PullRequest
0 голосов
/ 23 октября 2018

Метод, который я хочу использовать для модульного тестирования, в какой-то момент переходит к этому коду.

var resourceOwnerToken = 
      new TokenClient(_tokenClientEndpoint, MobileClient.ClientId, MobileClient.ClientSecret);

IdentityModel.Client.TokenResponse tokenResponse =
      await resourceOwnerToken.RequestResourceOwnerPasswordAsync(model.Phone, model.Password);

RequestResourceOwnerPasswordAsync - это метод статического расширения, который находится в библиотеке.

public static Task<TokenResponse> RequestResourceOwnerPasswordAsync
    (this TokenClient client, string userName, string password, string scope = null, 
     object extra = null, CancellationToken cancellationToken = default(CancellationToken));

Когдая начинаю тестирование, значение tokenResponse равно нулю, поэтому я получаю сообщение об ошибке. Я пробовал mock.Setup, но у меня неверная настройка при ошибке метода расширения.Что я должен сделать, чтобы tokenResponse имел значение?

1 Ответ

0 голосов
/ 23 октября 2018

У вас есть два варианта

1) Используйте прокладки.https://docs.microsoft.com/en-us/visualstudio/test/isolating-code-under-test-with-microsoft-fakes?view=vs-2017

2) Обернуть статический класс в интерфейсе.

Обычно я делаю второй, так как часто нахожу, что обслуживание прокладок более раздражает, чем издержки класса упаковки.

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