Net Core: объявить и инициализировать новый оператор Enumerable in Moq - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь объявить и инициализировать пустой IEnumerable в операторе Moq.По какой-то причине последняя часть, где я пытаюсь объявить ProductResult как Enumerable, терпит неудачу.Могу ли я сделать это в соответствии с заявлением Moq?

mock.Setup(b => b.GetProductStatus(It.IsAny<bool>())).Returns(new List<ProductResult>().AsEnumerable() { });

Попытка исследовать эту статью:

IEnumerable a = новый IEnumerable ();Могу ли я сделать это?

Ответы [ 3 ]

1 голос
/ 19 сентября 2019

Вы должны выглядеть следующим образом.Нет необходимости делать AsEnumerable, поскольку List является реализацией IEnumerable.

 mock.Setup(x => x.GetProductStatus(It.IsAny<bool>()))
.Returns(new List<ProductResult>());

Ваш метод, который я считаю, выглядит следующим образом:

IEnumerable<ProductResult> GetProductStatus(bool someValue);

Со списком вы можете делать такие вещи, как Count, LinqЛюбой и т. Д.

Для получения дополнительной информации Quickstart является хорошим справочным материалом.Ссылка здесь: https://code.google.com/archive/p/moq/wikis/QuickStart.wiki

1 голос
/ 19 сентября 2019

Если вам просто нужно вернуть пустое IEnumerable, вы можете использовать Enumerable.Empty .Если вам нужна не пустая коллекция, вы можете вернуть любую, потому что все они реализуют IEnumberable.

.Returns(Enumerable.Empty<ProductResult>())
.Returns(new[] {1, 2, 3})
0 голосов
/ 19 сентября 2019

Я могу только сделать дикое предположение с этой ограниченной информацией.Не могли бы вы удалить .AsEnumerable() { } и посмотреть?

  1. {} нечетный и неправильный код C #.
  2. Список реализует IEnumerable, поэтому вам не нужен .AsEnumerable ()
...