簡體   English   中英

單元測試SqlCommand擴展方法的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM