Как предоставить фиктивные значения в FeedResponse для CosmosSDK v3 +? - PullRequest
0 голосов
/ 29 сентября 2019

Я пишу слой доступа к данным для своего приложения и пытаюсь смоделировать зависимость CosmosDB SDK для модульного тестирования.Я использую NUnit с NSubstitute и столкнулся с проблемой, где я пытаюсь смоделировать возвращаемые значения для Container.GetItemQueryIterator.

Я успешно предоставил фиктивный feedIterator в качестве ответа на этот вызов и фиктивный feedResponse в качестве возвращаемого значения для feedIterator.ReadNextAsync, но я не могу понять, как ввести какие-либо значения в FeedResponse для проверки

Код, который я пытаюсь протестировать, выглядит следующим образом:

var feedIterator = container.GetItemQueryIterator<T>(queryDefinition);

  while (feedIterator.HasMoreResults){
    result.success = true;

    foreach (var item in await feedIterator.ReadNextAsync()){
      list.Add(item);
    }
  }

Моя попытка смоделировать зависимости следующим образом (упрощенно):

this.mockFeedResponse = Substitute.For<FeedResponse<T>>(this.mockApplicationList);         
this.mockFeedIterator = Substitute.For<FeedIterator<T>>();
this.mockFeedIterator.ReadNextAsync().ReturnsForAnyArgs(Task.FromResult(this.mockFeedResponse));
this.mockFeedIterator.HasMoreResults.Returns(true);

Lookingв документации AzureCosmosDB SDK, кажется, есть конструктор FeedResponse для моделирования, который принимает IEnumerable в качестве параметра, но NSubstitute жалуется, говоря, что не может найти этот конструктор, когда я пытаюсь передать список для использования.Есть ли альтернатива, что я могу кормить некоторые IEnumerable в качестве FeedResponse?Куда я иду не так?

...