0
我正在與一個團隊合作,我們不斷將console.log
和debugger
或binding.pry
(Ruby)放入我們的代碼中。爲此編寫單元測試的適當策略是什麼?我們目前沒有進行單元測試(我知道這很荒謬),但這是我們需要處理的,因爲我們意外地將console.log
和binding.pry
投入生產。如何測試代碼是否具有調試器?
我正在與一個團隊合作,我們不斷將console.log
和debugger
或binding.pry
(Ruby)放入我們的代碼中。爲此編寫單元測試的適當策略是什麼?我們目前沒有進行單元測試(我知道這很荒謬),但這是我們需要處理的,因爲我們意外地將console.log
和binding.pry
投入生產。如何測試代碼是否具有調試器?
應該爲此創建兩個不同的問題(每種語言一個)。
對於JavaScript,你可以短路console.log
通過定義console.log
到一個空函數:
console.log =() => {}; // ES6
console.log = function() {}; // ES5
的最佳途徑,雖然會避免無意中犯console.log
。最簡單的方法是使用類似ESLint的東西,並確保您有控制檯調用的規則。
如果你的lint沒有通過,你可以進一步爲它定義一個(或pre-commit
)觸發器(或者與其他存儲庫中的等價物)。
我對Ruby不是很熟悉,但它可能與我剛纔提到的所有內容都有相同之處。
無論如何,binding.pry會打破你的規格。如果您使用的是AirBnB風格指南或手動配置它,eslint應該標記console.logs。否則,你會想要一個git pre-commit hook或者其他東西。 –
一個非常有用的提示,試圖避免在將來避免這種情況:像鉻這樣的現代瀏覽器通過點擊源代碼標籤,內置到devtools中的調試器,絕對會打動您的頭腦,並刷新很多以查看日誌的輸出(在chrome中至少,您可以在代碼中突出顯示不同的表達式,只要它在當前上下文中,並且您可以看到它評估的結果) –
@DaveNewton,我喜歡AirBnB風格指南,我已經將它出演了將近一年的時間,但是從未實現過它。 – dsomel21