2011-10-26 19 views
3

我有一個out參數的方法,可能會拋出異常。我想測試與模擬犀牛這種行爲,所以我做的:Rhino .OutRef與.Throw不兼容?

Expect.Call(() => mymethod(null, null, out integer1, out integer2)) 
       .IgnoreArguments().OutRef(1, 2).Throw(new Exception()); 

但現在看來很清楚,從參數初始化之前拋出異常。

我做錯了什麼或者是正常的犀牛行爲? 你將如何解決這個問題?

回答

0

這可能在Rhino.Mocks的錯誤。我認爲使用.Throw()方法說「當我調用這個方法時拋出這個異常」。這就是它 - 拋出異常。

我會重新設計代碼,以免預期out變量被初始化AND引發異常。當我在try/catch區塊中封裝方法並捕獲異常時,我認爲該方法可能已在任何地方死亡,並且我也沒有對可能完成(或未完成)的工作做出任何假設。

也許代碼可以分成兩種方法?

+0

嗯,我想這是...我想斷言參數仍然初始化爲一種特定類型的異常,但我可能依靠它不是推薦的行爲。最終,重構就是解決方案。 – Zonko

相關問題