繁体   English   中英

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

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

我必须模拟一个返回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>>());

请让我知道如何模拟此实例?

注意:我想返回此模拟的数据。

谢谢

Returns()的参数是您希望模拟返回的值。 不要在其中使用模拟库中的任何构造,而只需返回您想要的内容即可:

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

GetAllPrograms("ATV")方法时,它将返回列表中的所有内容。 如果要过滤GetAllPrograms()的参数,则需要It.IsAny<>构造。 以下内容将与任何站点名称匹配:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM