我想生成一个假货列表,而不使用Moq指定虚假对象的所有属性:
var mock = Mock.Of<ICalendar>(x =>
x.GetSchedules() == new List<ISchedule>
{
// I don't want specify explicitly title and other properties
Mock.Of<ISchedule>(y => y.Title == "fdfdf" && y.Start == DateTime.Today)
});
List<ISchedule> s = mock.GetSchedules();
是否可以指定&#34;规则&#34;而不是硬编码属性?是否可以设置我想要的项目数量?
谢谢。
答案 0 :(得分:3)
希望这会有所帮助:
int numberOfElements = 10;
var mock = Mock.Of<ICalendar>(x =>
x.GetSchedules() == Enumerable.Repeat(Mock.Of<ISchedule>(), numberOfElements).ToList());
答案 1 :(得分:1)
您可以创建一个ScheduleMockBuilder抽象类,使用一些随机数据构建一个模拟的ISchedule。 然后,根据列表中的项目,多次调用此构建器。
查看Builder pattern以获取更多信息。
您也可以使用QuickGenerate;这是一个带有我的同事写的通用构建器的库。它可以生成具有随机属性的对象,您甚至可以为生成的随机数据添加约束。
答案 2 :(得分:1)
查看AutoMoq并查看是否符合您的要求。