我試圖執行後續調用驗證和我發現,起訂量支持InSequence的()方法用於此,如:我可以使用moq的InSequence()和MockBehavior.Loose嗎?
MockSequence s = new MockSequence();
validator.InSequence(s).Setup(m => m.IsValid(It.IsAny<Frame>())).Returns(true);
encryptor.InSequence(s).Setup(m=>m.Encrypt(It.IsAny<Frame>()));
socket.InSequence(s).Setup(m => m.Send(It.IsAny<Frame>()));
compressor.InSequence(s).Setup(m => m.Compress(It.IsAny<Frame>()));
然而,這似乎是唯一的工作時,我指定仿製品的行爲爲「嚴格」 ,它禁止我在嘲弄的物體上調用額外的方法。但是,我希望能夠調用這些對象的其他方法,我只是希望這些調用按順序執行。
是否有任何「支持」的方式(而不是訴諸於.Callback()和手工實現)?我發現了一個名爲moq.sequence的附加庫,但是,預編譯版本不適用於最新的Moq。
您是否已將所有這些內容發佈到** Moq's Issues **網站?你必須研究這個問題,所以我認爲它沒有在文檔中解釋 - 所以他們可能沒有意識到這個問題。我可以向你保證,他們會查看那裏發佈的問題/建議。這需要一些時間,但他們需要。我自己發送了一些有用的補丁(嘲笑代表,計數呼叫等)。如果你不想參與,我可以仔細檢查問題並在那裏註冊,但我認爲,因爲你已經知道細節,你會描述它好得多:) [順便說一句。 sorki,niechciałempolskimmieszaćna SO :)] – quetzalcoatl 2012-12-09 11:49:12
嗨,quetzalcoatl。我不知道Moq實際上是維護的,Moq至少有兩個或三個源代碼庫。這是目前的:https://github.com/Moq/moq4? 我會在聖誕節前和新年前的幾天假期,所以也許我會嘗試把東西放在一起或至少進一步調查。 – 2012-12-14 12:06:45
是的,目前的確是GitHub上的。之前Moq是在code.google上託管的,但他們最近搬到了GitHub。 GitHub上看到的問題列表是最近發佈的問題列表,應該在那裏報告新問題。由於報告的「舊」問題和功能請求數量衆多,code.google上的網站仍然存在並未被刪除/刪除/等。他們沒有搬到GitHub,IIRC,因爲沒有辦法導入它們,沒有人真的想複製 - 手工粘貼它們!他們仍然在考慮之中,但我認爲來自GitHub的問題比舊的code.google有優先權。 – quetzalcoatl 2012-12-15 12:11:44