2015-05-28 29 views
1

我使用JustMock和AutoFac並試圖嘲弄一個很簡單的對象的數組,但我似乎無法得到正確的語法...不能嘲笑簡單的對象數組JustMock

 var labResults = Mock.Create<LabResult[]>(); 

     Mock.Arrange(() => labResults).Returns(new LabResult[] 
             { 
              new LabResult 
              { 
               EstablishmentID = "0101", 
               PatientID = "A11111111", 
               EpisodeNo = 1, 
               LabNumber = "975310A", 
               Status = LabResultStatus.Initial, 
               TestCode = "ABCD", 
               DateUpdated = DateTime.Now 
              }, 

              <snip> 

              new LabResult 
              { 
               EstablishmentID = "0101", 
               PatientID = "A11111112", 
               EpisodeNo = 1, 
               LabNumber = "975310A", 
               Status = LabResultStatus.Final, 
               TestCode = "ABC", 
               DateUpdated = DateTime.Now 
              }, 
            }); 

代碼編譯得很好,但是當運行在Mock.Create調用時給我一個'System.ArgumentException'錯誤 - '附加信息:值無效'。

這是一個讓我難倒了整個早晨,我無法在任何地方找到合適的例子。有人可以告訴我正確的語法 - 它需要是一個返回的數組,而不是一個List。

乾杯

回答

3

你不需要模擬。你正在嘲笑一個數組,你可以簡單地通過分配你已經在Returns模擬設置的一部分得到的數值來創建副手。像這樣:

var labResults = new LabResult[] 
{ 
    new LabResult { ... }, 
    new LabResult { ... }, 
}; 
+0

這,這麼多。當我在測試中開始使用mock時,我最終試圖嘲笑所有人和每個人。一般來說,當它是一個昂貴的資源時(即當它使用網絡,IO,DB,...)時,或者當我只想檢查組件之間的協作是否正確時(例如,我的待測系統是否發送把正確的信息發給合作者?)。嘲諷集合或便宜且易於構建的輸入參數只會導致更多(也是不必要的)工作。 – prgmtc

+0

特別是像C#這樣的語言,你需要各種接口或虛擬關鍵字才能讓模擬框架在低水平上有效地工作。 – prgmtc

+0

@jimmy_keen呃,呃...我不覺得自己是個傻瓜。你當然是完全正確的,答案是一直在說我。謝謝。 – Mike