Как смоделировать Azure .Контейнер, чтобы вызвать исключение и не получить ошибку - PullRequest
0 голосов
/ 12 апреля 2020

Я пишу юнит-тест, используя .netcore и xUnit. В настоящее время я пытаюсь смоделировать Azure .Client и Azure .Container, я хотел бы смоделировать метод GetItemLinqQueryable из Azure .Container, чтобы вызвать исключение, но я получаю эту ошибку:

> Assert.IsType() Failure Expected: System.Exception Actual:  
> Moq.Language.Flow.NonVoidSetupPhrase`2

Это один из моих блоков кода:

    _mockClientAudioMetadataHelper
                    .Setup(x => x.GetContainer(It.IsAny<string>(), It.IsAny<string>()))
                    .Returns(_mockContainerAudioMetadataHelper.Object);

                var result = _mockContainerAudioMetadataHelper //Container
                    .Setup(x => x.GetItemLinqQueryable<AudioFileSummaryDTO>(It.IsAny<bool>(), It.IsAny<string>(), It.IsAny<QueryRequestOptions>()))
                    .Throws(new Exception());

                Assert.IsType<Exception>(result);

Итак, в строке подтверждения у меня есть описанная выше ошибка, я не знаю, как смоделировать, что контейнер генерирует исключение и Утверждение должно быть верным и пройти модульный тест. Спасибо.

1 Ответ

0 голосов
/ 14 апреля 2020

Я мог бы решить эту проблему, я сделал это так:

//Mock Azure Client
_mockClientAudioMetadataHelper.Setup(x => x.GetContainer(It.IsAny<string>(), It.IsAny<string>())).Returns(_mockContainerAudioMetadataHelper.Object);

//Mock Azure container.
var result = _mockContainerAudioMetadataHelper
                 .Setup(c => c.GetItemQueryIterator<AudioFileSummaryDTO>(It.IsAny<QueryDefinition>(), It.IsAny<string>(), It.IsAny<QueryRequestOptions>()))
                 .Callback(() => throw new Exception());

            //Assert
            Assert.ThrowsAsync<Exception>(() =>
              _mockContainerAudioMetadataHelper.Object.
              GetItemQueryIterator<AudioFileSummaryDTO>(It.IsAny<QueryDefinition>(), It.IsAny<string>(), It.IsAny<QueryRequestOptions>())
              .ReadNextAsync()
            );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...