[英]Method for unit testing an extension method for SqlCommand
我為SqlCommand創建了一個擴展方法,在執行命令之前允許一些額外的工作:
public static SqlDataReader ExecuteMyReader( this SqlCommand sqlCommand )
{
// Some calculations here
return sqlCommand.ExecuteReader();
}
我的問題是,對這種擴展方法進行單元測試的最佳方法是什么?
我應該直接針對數據庫進行測試嗎?
或者我應該嘗試創建一個模擬對象? 如果是這種情況我嘗試通過Moq這樣做,但由於SqlCommand是一個密封的類我似乎無法模仿它。
如果您希望測試該命令實際上是否更新了數據庫,那么您將編寫集成測試 。 那么測試它的最佳方法是:
這很好,因為這就是你關心的。 如果這是嘲笑(沒有意義),你會測試什么? 你怎么知道它有效?
您希望模擬此操作的唯一時間是使用擴展方法的代碼。 但是,當您希望測試擴展方法時,只有一種方法,那就是實際命中數據庫。
你能將計算結果用於他們自己的方法並單獨測試嗎? 正如您所發現的那樣,在這種粒度級別上編寫函數的單元測試是困難和無益的。
你說你無法測試整個方法是對的。
我不知道你的計算的性質,但如果它們可以拆分成另一個函數,那么該函數可以進行單元測試。 這將有助於確保我假設的計算是您的實現的核心,正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.