2012-03-16 50 views
4

生成假貨的名單我想生成假貨的列表,而無需使用指定的假冒對象的所有屬性起訂量:如何使用起訂量

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

是否有可能指定的硬編碼,而不是「規則」屬性?是否可以設置我想要的項目數量?

謝謝。

回答

2

希望這有助於:

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

沒錯這就是那種結果,我的期望。但是我想讓這個對象被「填滿」,像MS Pex那樣的隨機屬性。 最後我認爲它超出了Mocking框架的範圍 – Florian 2012-03-19 13:23:28

1

您可以創建一個ScheduleMockBuilder抽象類,用一些隨機數據構建一個ISchedule模擬。 然後在需要列表中的項目時多次調用此構建器。

查看Builder pattern瞭解更多信息。

您也可以使用QuickGenerate;這是一個有我的同事寫的通用生成器的庫。它可以生成具有隨機屬性的對象,甚至可以爲正在生成的隨機數據添加約束條件。

2

看看AutoMoq,看看是不是你想要的。

+0

好吧,我會測試它 – Florian 2012-03-19 13:20:14