Мне нужно издеваться над методом, который возвращает IEnumerable, как показано ниже.
public IEnumerable<Program> GetAllPrograms(string marketCode) {
return context.Set<Program>()
.Where(p => p.Market.Equals(marketCode)
&& p.IsEnabled == true);
}
Я попробовал описанный ниже подход, но этот вызов не дал никакого результата.
programRepositoryMock.Setup(m => m.GetAllPrograms("ATV"))
.Returns(It.IsAny<IEnumerable<QuoteSettings.Program>>());
Пожалуйста, дайте мне знать, как издеваться над этим экземпляром?
Примечание: я хочу вернуть данные для этого макета.
Спасибо
@thisextendsthat, я не могу создать переменную типа IEnumerable <T>, т.е. в моем случае IEnumerable <program> и вернуть ее. Не могли бы вы уточнить?
Просто верните List<T>, это тоже перечислимое ...





Аргумент Returns() - это значение, которое вы хотите вернуть из макета. Не используйте там никаких конструкций из библиотеки имитации, а просто верните то, что хотите:
List<Program> result = new List<Program>();
// Add entries to result list here...
programRepositoryMock.Setup(m => m.GetAllPrograms("ATV"))
.Returns(result);
Это вернет все, что есть в списке, при вызове метода GetAllPrograms("ATV"). Вам понадобится конструкция It.IsAny<>, если вы хотите отфильтровать аргументы для GetAllPrograms(). Следующее будет соответствовать любому названию станции:
programRepositoryMock.Setup(m => m.GetAllPrograms(It.IsAny<string>()))
.Returns(result);
It.IsAny<T>- это вспомогательный метод, который вы используете для настройки макета. Просто передайтеReturnsвсе, что вы хотите вернуть из метода. Если вам просто нужен пустой перечислимый, попробуйтеEnumerable.Empty<T>.