這似乎是一個很容易的問題,但我似乎無法找到關鍵字來影響我的搜索。moqing靜態方法調用c#庫類
我試圖通過嘲笑此方法調用內的所有對象進行單元測試。我能夠這樣做的都是我自己創作的,除了這一個:
public void MyFunc(MyVarClass myVar)
{
Image picture;
...
picture = Image.FromStream(new MemoryStream(myVar.ImageStream));
...
}
FromStream從圖像類的靜態調用(C#的一部分)。所以我怎麼能重構我的代碼來嘲笑這一點,因爲我真的不想提供一個圖像流到單元測試。
我覺得像包裝到一個界面的想法,如果我有多個靜態調用實例通過我的代碼,此解決方案不能很好地擴展。 我將不得不爲每個靜態調用創建一個函數。有沒有辦法模擬庫類的靜態方法? – Joe 2010-03-09 06:41:26
您只需要爲不同的靜態方法創建一個屬性,因爲您可以重複使用它們。我相信TypeMock可以使用一些IL編織來嘲弄靜態方法,但它不是免費的。解耦代碼是可測試的,在C#中恐怕需要很多工作。 – tarn 2010-03-09 06:47:41
經過一番思考,提供的界面和功能解決方案都很混亂,但是這個功能解決方案比創建一個新界面和類僅僅嘲弄一個靜態功能花費更少的線。所以我正在用這個。感謝所有的答案。 – Joe 2010-03-10 01:35:44