如何使用Moq生成假货列表

本文关键字:列表 何使用 Moq | 更新日期: 2023-09-27 18:27:56

我想使用Moq:生成一个fake列表,而不指定fake对象的所有属性

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();

是否可以指定"规则"而不是硬编码属性?可以设置我想要的物品数量吗?

谢谢。

如何使用Moq生成假货列表

希望这有帮助:

int numberOfElements = 10;
var mock = Mock.Of<ICalendar>(x =>
           x.GetSchedules() == Enumerable.Repeat(Mock.Of<ISchedule>(), numberOfElements).ToList());

看看AutoMoq,看看它是否符合您的要求。

您可以创建一个ScheduleMockBuilder抽象类,用一些随机数据构建ISchedule的Mock。然后根据列表中的项目需要多次调用此生成器。

有关详细信息,请查看生成器模式。

您也可以使用QuickGenerate;这是我的一位同事写的一个带有通用生成器的库。它可以开箱即用地生成具有随机特性的对象,甚至可以为生成的随机数据添加约束。