Как смоделировать метод, возвращающий IEnumerable <T>в методе модульного теста? - PullRequest
0 голосов
/ 16 декабря 2018

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

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

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

Спасибо

1 Ответ

0 голосов
/ 16 декабря 2018

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