如何在单元测试方法中模拟返回 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);
我必须模拟一个 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);