Как издеваться над методом, возвращающим IEnumerable <T> в методе модульного тестирования?

Мне нужно издеваться над методом, который возвращает 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>>());

Пожалуйста, дайте мне знать, как издеваться над этим экземпляром?

Примечание: я хочу вернуть данные для этого макета.

Спасибо

It.IsAny<T> - это вспомогательный метод, который вы используете для настройки макета. Просто передайте Returns все, что вы хотите вернуть из метода. Если вам просто нужен пустой перечислимый, попробуйте Enumerable.Empty<T>.
thisextendsthat 16.12.2018 15:12

@thisextendsthat, я не могу создать переменную типа IEnumerable <T>, т.е. в моем случае IEnumerable <program> и вернуть ее. Не могли бы вы уточнить?

Shreenivasa Desai 16.12.2018 15:19

Просто верните List<T>, это тоже перечислимое ...

DavidG 16.12.2018 15:20
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
1 965
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Аргумент 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);

Другие вопросы по теме