我有一種感覺,你可能會過度思考這一點。當事情看起來很混亂時,我通常會提醒自己退後一步並回顧一下基本知識。首先,我只想做滿足要求的最低要求。我並不關心繫統中是否會有很多依賴項,但我還沒有意識到,所以我會以最簡單的方式編寫測試。如果我看到需要依賴關係,我會投入模擬並支持允許我的測試運行所需的最小界面。如果系統稍後需要擴展或支持附加依賴項,我可以擴展該模擬,甚至可以用我編寫的下一個測試特有的某些內容替換它。我也可以擴展測試,甚至寫一個新的測試來滿足新的需求,因爲他們對我而言是已知和/或清楚的。
重構只是一個奇特的說法,我打算改變一些東西。這可能是爲了優化或改進設計,也可能是因爲我認爲需要突破新的接口和依賴關係。在那種情況下,我首先寫一個更改到我的測試中,或者寫一個新的測試,它可能會或可能不會取代現有的測試。完成後,我會轉到我的代碼。
自上而下或自下而上,基本面基本相同。問題在於何時依賴將變得不言自明,然後確定處理它們的策略。當你覺得有必要打破某些東西時,我會建議一個很短的時間。讓這個想法成形,並在提出問題的同時將其展現在眼前。如果追求這個想法是正確的,那就寫測試來處理你的問題,然後從那裏編碼。
我有時會發現自己渴望創造一大堆嘲笑來處理我所能想到的每一種可能的依賴性意外事件,並且每當我回到重複「KISS」,「YAGNI」和「Make它會工作,然後讓它更好地工作「,一直到我的腦海中,直到我收到消息,說我無法承受,因爲我試圖思考太多。
無論您是TDD,BDD還是使用任何其他方法,保持簡單而簡單的事情都是確保您不會一次處理太多問題的關鍵。這可能是要記住的最重要的事情。如果看起來太難以想象,那麼問問自己,如果你有「需要的氣味」,這表明你需要進一步細分。你能把這個「故事」分解成一系列涵蓋整體的小故事嗎?
我知道我沒有必要直接回答你問的問題,但是我認爲這是值得用這種方式編寫的,因爲根據我的經驗,當任務很小時,依賴關係和重構就變得不言自明,並且僅限於只有一個或兩個特徵,而當任務過於廣泛並且可以解釋時則會出現相反的情況。
此處BDD表示行爲驅動開發,而不是二元決策圖。 (這是爲了說明爲什麼我取消了agf的標籤重命名。) – adl