這是我的單元測試問題之一。帶存根的單元測試類。我應該配置存根以返回正確的值嗎?
我正在閱讀單元測試的藝術,並在第3章作者顯示如何刪除一個或多個類之間的依賴關係。這似乎很明顯。不完全清楚的是以下幾點。
當我使用存根配置測試方法時,我將其配置爲返回特定值。然後,我調用被測試類暴露的測試方法。該方法執行一些邏輯並使用存根的返回值。問題是:如果存根配置爲返回錯誤的值,那麼我的測試可能會失敗。
所以問題是:當我使用存根時,我應該總是將它們配置爲返回預期值嗎?在我的意見中,這應該是測試的正確方法,就好像存根返回始終是期望值一樣,我確定只測試被測方法內部的邏輯。
您對此有何看法?是否存在某種意義要求存根返回不正確的值?
非常感謝, 馬爾科
哦,這就是我喜歡接受的答案!非常感謝! – Marconline 2012-01-08 12:59:48
我還有另一個問題:假設我有一個存根,如果文件有'ext'擴展名則返回True,否則返回false。我的被測方法調用了有效擴展的方法,但存根被配置爲返回false(即我們正在測試一個悲傷的路徑)。我該怎麼做才能改進我的方法並讓測試通過?我看到的唯一解決方案是不相信存根,但是...這是正確的嗎? – Marconline 2012-01-08 13:27:55
根據擴展名(我們稱之爲ExtensionValidator)返回true/false的類是另一個系統組件。這個邏輯將在別處測試(在ExtensionValidatorTests中)。在我們當前的環境中,我們正在測試sut,現在ExtensionValidator只是一個存根,它會返回我們告訴它返回的任何值。所以,根據擴展邏輯的真/假不需要在我們當前的上下文中進行測試。請讓我知道這是否回答你的問題。 – GolfWolf 2012-01-08 14:17:50