如何使用Moq生成假货列表

时间:2012-03-16 09:59:41

标签: c# moq

我想生成一个假货列表,而不使用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;而不是硬编码属性?是否可以设置我想要的项目数量?

谢谢。

3 个答案:

答案 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并查看是否符合您的要求。