#在上一篇文章中,我們開始討論 WordPress 中的單元測試理論。具體來說,我們回顧了我們在單元測試主題和插件方面的工作,然後開始討論程式碼單元,這如何影響我們的測試,並且我們回顧了更大的軟體開發世界中的單元測試。
我們將繼續討論 WordPress 中的單元測試理論,但會從它如何幫助識別問題、驅動架構、記錄專案等角度進行討論。
發現問題,節省時間
回想一下本系列前面的內容,進行單元測試的傳統方法是這樣的:
- 寫測試,運行它(知道它會失敗)
- 編寫函數以使該方法通過。
- 運行測試。如果測試失敗,則繼續處理該功能;否則,請轉到下一個。
是的,第一步有點教條。為什麼要浪費時間去運行一些你知道會失敗的東西,對吧?不過,你明白了。但是當您開始將這種特殊技術應用於開發時,您會發現編寫程式碼時會形成一定的節奏,而這是整個目標的一部分。
但這只是其中的一半——單元測試實際上可以幫助您在開發早期發現問題。
為了理解這一點,最好回顧一下這個想法。
假設您正在為基於 WordPress 的專案開發一項功能,您將允許使用者在不實際登入 WordPress 儀表板的情況下建立使用者帳戶。這假設您已經設定了一個頁面範本來處理註冊、必要的驗證以及用於產生密碼和電子郵件的程式碼。
您在瀏覽器中載入頁面,嘗試建立一些使用者 - 一些具有相同的電子郵件地址,有些具有不正確的密碼,有些具有非法字元等。您明白了 - 有多種方法驗證通過和失敗。這太粗糙了吧!這表示每次變更使用者註冊功能時,您都必須執行相同的 n 次註冊,以確保不會出現任何問題。
或您可以編寫一套測試來處理它,並在每次程式碼更改時運行它們。
所以,是的,編寫單元測試可能會花費大量時間,但看看每次修改程式碼單元時節省的時間。這是非常值得的,這可以幫助儘早發現問題(即在發佈到生產之前),這些問題可能會因為有人忘記模擬測試的一種排列而被錯過。
自我記錄
在編寫單元測試時,您不僅可以透過確保程式碼實際運作來提高程式碼質量,而且本質上還可以提供面向開發人員的文件。
如果您正在對產品中建置的功能進行單元測試,您將提供有關功能如何運作、何時應該失敗以及何時應該通過的文件。
隨之而來的是一些假設:具體來說,您正在邏輯地命名和分組您的函數及其相關測試,並且您正在正確測試每個函數。
透過 PHPUnit,WordPress 單元測驗可以輕鬆執行易於閱讀的斷言。您只需聲明assertTrue、assertFalse 或組成專案的函數上可用的任何其他斷言。
按照上面的範例,這表示您可以編寫一個函數來確保使用者註冊函數在嘗試使用空電子郵件地址註冊時失敗:
$this->assertFalse( registerNewUser( '' ) );
也許是一個簡單的例子,但重點仍然是:您的程式碼變得自文檔化,並且只需要您編寫清晰的單元測試。
架構
也許單元測試最被低估的優勢之一是它可以幫助驅動專案的架構。通常,主題或外掛程式開發可以透過以下兩種方式之一開始:
- 列出函數,繪製使用者介面,然後編寫程式碼
- 畫出文件如何協同工作的圖表,然後寫程式碼
這些本質上並不是壞事,但我認為它們很弱(我會是第一個承認我所做的事情比我想分享的要多的人!)。但是「編寫程式碼」步驟需要承擔很多責任,不是嗎?
對於任何一個長時間編寫程式碼的人來說,你都太熟悉了,以至於你最終會意識到,“哦......我沒有想到這一點。”
如果你幸運的話,這通常意味著你可以編寫一個輔助方法或另一個條件來處理你忽略的情況,但在最壞的情況下,這意味著你可能必須重新設計你的整個類別或整個集合解決這個問題的函數。
單元測試雖然不完美,但可以幫助緩解這種情況。
考慮一下這樣一個事實:從一開始,您就列出了您希望主題或外掛程式提供的所有功能。您尚未編寫任何程式碼,但也許您有某種類型的 UI 草圖和/或一組類別圖。
接下来,您开始编写要编写的测试以测试您的项目。回想一下,单元测试的一部分是将代码分解为尽可能的原子单元,因此您的任务是为每个单元编写单元测试,咳咳。
由于单元测试的性质,您本质上会以不同的方式思考您的代码:您正在考虑“编写测试”,而不是“编写代码”,并且因为您必须在更原子的级别上进行思考,您会情不自禁地考虑经常被归入“编写代码”的边缘案例。
代码的语言
作为开发人员,我们非常习惯使用不断强化我们编写代码的约定。我的意思是,我们倾向于提供缩写的变量名称、神秘的函数名称和类名称,这些名称对于您自己或项目团队之外的任何人来说可能没有任何意义。
单元测试不一定是编写更易于阅读的代码的关键,但它可以进一步帮助提供更清晰的函数名称。
回想一下您读过的第一本编程书、您参加的第一堂计算机科学课或者您看到的第一段开源代码,方法名称通常是动词。为什么他们不应该这样?方法是封装代码的方法,做一些事情。但随着我们在项目上工作的时间越来越长,我们变得越来越懒,我们的代码从“register_user_and_email_password()
”变成“new_account()
”。
显然,前者比后者更清晰,但如果我们致力于高质量的单元测试,并且希望确保我们的单元测试易于阅读,为了使它们易于阅读,我们的函数名称必须易于阅读。
这不是更容易阅读吗:
$this->assertFalse( register_user_and_email_password( '' ) );
而不是这个?
$this->assertFalse( new_account( '' ) );
同样,这也许是一个简单的示例,但原则仍然是:编写良好的单元测试,以帮助自我记录驱动函数语言的代码。
结论
我们已经讨论了单元测试的基础知识以及主要优点,但是我们还没有讨论单元测试带来的缺点,我们甚至还没有考虑如何将其合并到我们的项目中。工作流程。
因此,在下一篇文章中,我们将尝试做到这一点。
以上是單元測試理論(續):第 2 部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在 WordPress 網站上啟用評論功能,可以為訪客提供參與討論和分享反饋的平台。為此,請按照以下步驟操作:啟用評論:在儀錶盤中,導航至“設置”>“討論”,並選中“允許評論”複選框。創建評論表單:在編輯器中,單擊“添加塊”並蒐索“評論”塊,將其添加到內容中。自定義評論表單:通過設置標題、標籤、佔位符和按鈕文本來定制評論塊。保存更改:單擊“更新”以保存評論框並將其添加到頁面或文章中。

如何復制 WordPress 子站?步驟:在主站創建子站。在主站克隆子站。將克隆導入目標位置。更新域名(可選)。分開插件和主題。

在WordPress中創建自定義頁頭的步驟如下:編輯主題文件“header.php”。添加您的網站名稱和描述。創建導航菜單。添加搜索欄。保存更改並查看您的自定義頁頭。

WordPress 網站中啟用評論功能:1. 登錄管理面板,轉到 "設置"-"討論",勾選 "允許評論";2. 選擇顯示評論的位置;3. 自定義評論表單;4. 管理評論,批准、拒絕或刪除;5. 使用 <?php comments_template(); ?> 標籤顯示評論;6. 啟用嵌套評論;7. 調整評論外形;8. 使用插件和驗證碼防止垃圾評論;9. 鼓勵用戶使用 Gravatar 頭像;10. 創建評論指

可以通過 WordPress 安裝 FTP 插件,配置 FTP 連接,然後使用文件管理器上傳源碼。步驟包括:安裝 FTP 插件、配置連接、瀏覽上傳位置、上傳文件、檢查上傳成功。

如何復制 WordPress 代碼?從管理界面複製:登錄 WordPress 網站,導航到目標位置,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。從文件複製:使用 SSH 或 FTP 連接到服務器,導航到主題或插件文件,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。

WordPress 錯誤解決指南:500 內部服務器錯誤:禁用插件或檢查服務器錯誤日誌。 404 未找到頁面:檢查 permalink 並確保頁面鏈接正確。白屏死機:增加服務器 PHP 內存限制。數據庫連接錯誤:檢查數據庫服務器狀態和 WordPress 配置。其他技巧:啟用調試模式、檢查錯誤日誌和尋求支持。預防錯誤:定期更新 WordPress、僅安裝必要插件、定期備份網站和優化網站性能。

如何在 WordPress 中關閉評論?特定文章或頁面:在編輯器中取消選中“討論”下的“允許評論”。整個網站:在“設置”->“討論”中取消選中“允許發表評論”。使用插件:安裝 Disable Comments 等插件禁用評論。編輯主題文件:通過編輯 comments.php 文件移除評論表單。自定義代碼:使用 add_filter() 函數禁用評論。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1
好用且免費的程式碼編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),