如何在单元测试方法中模拟返回 IEnumerable<T> 的方法?

How to mock a method returning IEnumerable<T> in unit test method?

我必须模拟一个 returns IEnumerable 的方法,如下所示。

public IEnumerable<Program> GetAllPrograms(string marketCode) {
            return context.Set<Program>()
                .Where(p => p.Market.Equals(marketCode)
                            && p.IsEnabled == true);
        }

我尝试了下面的方法,但是这个调用 return 没有任何结果。

  programRepositoryMock.Setup(m => m.GetAllPrograms("ATV"))
        .Returns(It.IsAny<IEnumerable<QuoteSettings.Program>>());

请告诉我如何模拟这个实例?

注意:我想return这个模拟的数据。

谢谢

Returns() 的参数是您希望模拟为 return 的值。不要使用那里的模拟库中的任何构造,而只是 return 你想要的:

List<Program> result = new List<Program>();
// Add entries to result list here...
programRepositoryMock.Setup(m => m.GetAllPrograms("ATV"))
    .Returns(result);

当调用 GetAllPrograms("ATV") 方法时,这将 return 列表中的任何内容。如果要过滤 GetAllPrograms() 的参数,则需要 It.IsAny<> 结构。以下将匹配任何电台名称:

programRepositoryMock.Setup(m => m.GetAllPrograms(It.IsAny<string>()))
    .Returns(result);