Manual:Writing testable PHP code/zh
Contents
- Running the tests
- Generate code coverage
- 編寫可測試的PHP程式碼
- Writing tests
- Continuous integration
- Understanding build failures
- Appendix
(how to help, resources..)
Tools
有關編寫可測試代碼的一些說明,將會在某個時候擴充。
不要假設全域的情境
如果在非全域的上下文中存取全域變數 (例如 $wgRequest
) 而沒有先使用 global
關鍵字來宣告它們,將會導致失敗並產生 E_NOTICE 訊息。
不要建立新的全域變數
將資訊放入全域變數看似容易,但卻會降低程式碼的可預測性。 依賴於全域變數,你就很難將功能隔離。 單例類型較適合測試 (但仍不太理想)。
只依靠直接輸入
雖然這並非永遠都能實現,但最好還是寫出只依賴直接輸入的程式碼。 也就是說,一個類別只使用傳給它的資訊,而不依賴單例或全域變數來取得「頻外」資訊。
<span id="Do_not_use_exit()
">
請勿使用exit()
幾乎就是絕對不要突然退出腳本。 此舉會使PHPUnit無法測試您的程式碼。 如果您的程式碼遇到意料之外的錯誤,正確的做法是拋出類似以下的異常:
throw new MWException( "Oh noes!" );
這將允許PHPUnit和MediaWiki正確退出,並向開發人員提供堆疊追蹤等資訊。