亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
發(fā)現(xiàn)問題,節(jié)省時(shí)間
自我記錄
架構(gòu)
代碼的語(yǔ)言
結(jié)論
首頁(yè) CMS教程 &#&按 單元測(cè)試?yán)碚摚ɡm(xù)):第 2 部分

單元測(cè)試?yán)碚摚ɡm(xù)):第 2 部分

Sep 02, 2023 pm 02:37 PM

單元測(cè)試?yán)碚摚ɡm(xù)):第 2 部分

#在上一篇文章中,我們開始討論 WordPress 中的單元測(cè)試?yán)碚?。具體來說,我們回顧了我們?cè)趩卧獪y(cè)試主題和插件方面的工作,然後開始討論程式碼單元,這如何影響我們的測(cè)試,並且我們回顧了更大的軟體開發(fā)世界中的單元測(cè)試。

我們將繼續(xù)討論 WordPress 中的單元測(cè)試?yán)碚?,但?huì)從它如何幫助識(shí)別問題、驅(qū)動(dòng)架構(gòu)、記錄專案等角度進(jìn)行討論。


發(fā)現(xiàn)問題,節(jié)省時(shí)間

回想一下本系列前面的內(nèi)容,進(jìn)行單元測(cè)試的傳統(tǒng)方法是這樣的:

  • 寫測(cè)試,運(yùn)行它(知道它會(huì)失?。?/li>
  • 編寫函數(shù)以使該方法通過。
  • 運(yùn)行測(cè)試。如果測(cè)試失敗,則繼續(xù)處理該功能;否則,請(qǐng)轉(zhuǎn)到下一個(gè)。

是的,第一步有點(diǎn)教條。為什麼要浪費(fèi)時(shí)間去運(yùn)行一些你知道會(huì)失敗的東西,對(duì)吧?不過,你明白了。但是當(dāng)您開始將這種特殊技術(shù)應(yīng)用於開發(fā)時(shí),您會(huì)發(fā)現(xiàn)編寫程式碼時(shí)會(huì)形成一定的節(jié)奏,而這是整個(gè)目標(biāo)的一部分。

但這只是其中的一半——單元測(cè)試實(shí)際上可以幫助您在開發(fā)早期發(fā)現(xiàn)問題。

為了理解這一點(diǎn),最好回顧一下這個(gè)想法。

假設(shè)您正在為基於 WordPress 的專案開發(fā)一項(xiàng)功能,您將允許使用者在不實(shí)際登入 WordPress 儀表板的情況下建立使用者帳戶。這假設(shè)您已經(jīng)設(shè)定了一個(gè)頁(yè)面範(fàn)本來處理註冊(cè)、必要的驗(yàn)證以及用於產(chǎn)生密碼和電子郵件的程式碼。

您在瀏覽器中載入頁(yè)面,嘗試建立一些使用者 - 一些具有相同的電子郵件地址,有些具有不正確的密碼,有些具有非法字元等。您明白了 - 有多種方法驗(yàn)證通過和失敗。這太粗糙了吧!這表示每次變更使用者註冊(cè)功能時(shí),您都必須執(zhí)行相同的 n 次註冊(cè),以確保不會(huì)出現(xiàn)任何問題。

或您可以編寫一套測(cè)試來處理它,並在每次程式碼更改時(shí)運(yùn)行它們。

所以,是的,編寫單元測(cè)試可能會(huì)花費(fèi)大量時(shí)間,但看看每次修改程式碼單元時(shí)節(jié)省的時(shí)間。這是非常值得的,這可以幫助儘早發(fā)現(xiàn)問題(即在發(fā)佈到生產(chǎn)之前),這些問題可能會(huì)因?yàn)橛腥送浤M測(cè)試的一種排列而被錯(cuò)過。


自我記錄

在編寫單元測(cè)試時(shí),您不僅可以透過確保程式碼實(shí)際運(yùn)作來提高程式碼質(zhì)量,而且本質(zhì)上還可以提供面向開發(fā)人員的文件。

如果您正在對(duì)產(chǎn)品中建置的功能進(jìn)行單元測(cè)試,您將提供有關(guān)功能如何運(yùn)作、何時(shí)應(yīng)該失敗以及何時(shí)應(yīng)該通過的文件。

隨之而來的是一些假設(shè):具體來說,您正在邏輯地命名和分組您的函數(shù)及其相關(guān)測(cè)試,並且您正在正確測(cè)試每個(gè)函數(shù)。

透過 PHPUnit,WordPress 單元測(cè)驗(yàn)可以輕鬆執(zhí)行易於閱讀的斷言。您只需聲明assertTrue、assertFalse 或組成專案的函數(shù)上可用的任何其他斷言。

按照上面的範(fàn)例,這表示您可以編寫一個(gè)函數(shù)來確保使用者註冊(cè)函數(shù)在嘗試使用空電子郵件地址註冊(cè)時(shí)失?。?/p>

$this->assertFalse( registerNewUser( '' ) );

也許是一個(gè)簡(jiǎn)單的例子,但重點(diǎn)仍然是:您的程式碼變得自文檔化,並且只需要您編寫清晰的單元測(cè)試。


架構(gòu)

也許單元測(cè)試最被低估的優(yōu)勢(shì)之一是它可以幫助驅(qū)動(dòng)專案的架構(gòu)。通常,主題或外掛程式開發(fā)可以透過以下兩種方式之一開始:

  1. 列出函數(shù),繪製使用者介面,然後編寫程式碼
  2. 畫出文件如何協(xié)同工作的圖表,然後寫程式碼

這些本質(zhì)上並不是壞事,但我認(rèn)為它們很弱(我會(huì)是第一個(gè)承認(rèn)我所做的事情比我想分享的要多的人?。5恰妇帉懗淌酱a」步驟需要承擔(dān)很多責(zé)任,不是嗎?

對(duì)於任何一個(gè)長(zhǎng)時(shí)間編寫程式碼的人來說,你都太熟悉了,以至於你最終會(huì)意識(shí)到,“哦......我沒有想到這一點(diǎn)。”

如果你幸運(yùn)的話,這通常意味著你可以編寫一個(gè)輔助方法或另一個(gè)條件來處理你忽略的情況,但在最壞的情況下,這意味著你可能必須重新設(shè)計(jì)你的整個(gè)類別或整個(gè)集合解決這個(gè)問題的函數(shù)。

單元測(cè)試雖然不完美,但可以幫助緩解這種情況。

考慮一下這樣一個(gè)事實(shí):從一開始,您就列出了您希望主題或外掛程式提供的所有功能。您尚未編寫任何程式碼,但也許您有某種類型的 UI 草圖和/或一組類別圖。

接下來,您開始編寫要編寫的測(cè)試以測(cè)試您的項(xiàng)目?;叵胍幌?,單元測(cè)試的一部分是將代碼分解為盡可能的原子單元,因此您的任務(wù)是為每個(gè)單元編寫單元測(cè)試,咳咳

由于單元測(cè)試的性質(zhì),您本質(zhì)上會(huì)以不同的方式思考您的代碼:您正在考慮“編寫測(cè)試”,而不是“編寫代碼”,并且因?yàn)槟仨氃诟拥募?jí)別上進(jìn)行思考,您會(huì)情不自禁地考慮經(jīng)常被歸入“編寫代碼”的邊緣案例。


代碼的語(yǔ)言

作為開發(fā)人員,我們非常習(xí)慣使用不斷強(qiáng)化我們編寫代碼的約定。我的意思是,我們傾向于提供縮寫的變量名稱、神秘的函數(shù)名稱和類名稱,這些名稱對(duì)于您自己或項(xiàng)目團(tuán)隊(duì)之外的任何人來說可能沒有任何意義。

單元測(cè)試不一定是編寫更易于閱讀的代碼的關(guān)鍵,但它可以進(jìn)一步幫助提供更清晰的函數(shù)名稱。

回想一下您讀過的第一本編程書、您參加的第一堂計(jì)算機(jī)科學(xué)課或者您看到的第一段開源代碼,方法名稱通常是動(dòng)詞。為什么他們不應(yīng)該這樣?方法是封裝代碼的方法,做一些事情。但隨著我們?cè)陧?xiàng)目上工作的時(shí)間越來越長(zhǎng),我們變得越來越懶,我們的代碼從“register_user_and_email_password()”變成“new_account()”。

顯然,前者比后者更清晰,但如果我們致力于高質(zhì)量的單元測(cè)試,并且希望確保我們的單元測(cè)試易于閱讀,為了使它們易于閱讀,我們的函數(shù)名稱必須易于閱讀。

這不是更容易閱讀嗎:

$this->assertFalse( register_user_and_email_password( '' ) );

而不是這個(gè)?

$this->assertFalse( new_account( '' ) );

同樣,這也許是一個(gè)簡(jiǎn)單的示例,但原則仍然是:編寫良好的單元測(cè)試,以幫助自我記錄驅(qū)動(dòng)函數(shù)語(yǔ)言的代碼。


結(jié)論

我們已經(jīng)討論了單元測(cè)試的基礎(chǔ)知識(shí)以及主要優(yōu)點(diǎn),但是我們還沒有討論單元測(cè)試帶來的缺點(diǎn),我們甚至還沒有考慮如何將其合并到我們的項(xiàng)目中。工作流程。

因此,在下一篇文章中,我們將嘗試做到這一點(diǎn)。

以上是單元測(cè)試?yán)碚摚ɡm(xù)):第 2 部分的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
如何診斷WordPress引起的高CPU使用 如何診斷WordPress引起的高CPU使用 Jul 06, 2025 am 12:08 AM

WordPress導(dǎo)致服務(wù)器CPU使用率飆升的主要原因包括插件問題、數(shù)據(jù)庫(kù)查詢效率低、主題代碼質(zhì)量差或流量激增。 1.首先通過top、htop或控制面板工具確認(rèn)是否為WordPress引起的高負(fù)載;2.進(jìn)入故障排查模式逐步啟用插件排查性能瓶頸,使用QueryMonitor分析插件執(zhí)行情況並刪除或替換低效插件;3.安裝緩存插件、清理冗餘數(shù)據(jù)、分析慢查詢?nèi)照I以優(yōu)化數(shù)據(jù)庫(kù);4.檢查主題是否存在過度加載內(nèi)容、複雜查詢或缺乏緩存機(jī)制等問題,建議用標(biāo)準(zhǔn)主題測(cè)試對(duì)比並優(yōu)化代碼邏輯。按照上述步驟逐一排查可定位並解

如何在WordPress中縮小JavaScript文件 如何在WordPress中縮小JavaScript文件 Jul 07, 2025 am 01:11 AM

MinifyingJavaScript文件可通過刪除空白、註釋和無(wú)用代碼來提升WordPress網(wǎng)站加載速度。 1.使用支持合併壓縮的緩存插件如W3TotalCache,在“Minify”選項(xiàng)中啟用並選擇壓縮模式;2.使用專用壓縮插件如FastVelocityMinify,提供更精細(xì)控制;3.手動(dòng)壓縮JS文件並通過FTP上傳,適用於熟悉開發(fā)工具的用戶。注意部分主題或插件腳本可能與壓縮功能衝突,啟用後需徹底測(cè)試網(wǎng)站功能。

如何以編程方式防止評(píng)論垃圾郵件 如何以編程方式防止評(píng)論垃圾郵件 Jul 08, 2025 am 12:04 AM

防止評(píng)論垃圾信息最有效的方式是通過程序化手段自動(dòng)識(shí)別並攔截。 1.使用驗(yàn)證碼機(jī)制(如GooglereCAPTCHA或hCaptcha)可有效區(qū)分人類與機(jī)器人,尤其適合公眾網(wǎng)站;2.設(shè)置隱藏字段(Honeypot技術(shù)),利用機(jī)器人自動(dòng)填寫特性識(shí)別垃圾評(píng)論,不影響用戶體驗(yàn);3.檢查評(píng)論內(nèi)容關(guān)鍵詞黑名單,通過敏感詞匹配過濾垃圾信息,需注意避免誤判;4.判斷評(píng)論頻率與來源IP,限制單位時(shí)間內(nèi)的提交次數(shù)並建立黑名單;5.使用第三方反垃圾服務(wù)(如Akismet、Cloudflare)提升識(shí)別準(zhǔn)確性??筛鶕?jù)網(wǎng)站

如何爭(zhēng)取古騰堡大塊的資產(chǎn) 如何爭(zhēng)取古騰堡大塊的資產(chǎn) Jul 09, 2025 am 12:14 AM

在開發(fā)Gutenberg塊時(shí),正確enqueue資產(chǎn)的方法包括:1.使用register_block_type指定editor_script、editor_style和style的路徑;2.在functions.php或插件中通過wp_register_script和wp_register_style註冊(cè)資源,並設(shè)置正確的依賴和版本;3.配置構(gòu)建工具輸出合適的模塊格式,並確保路徑一致;4.通過add_theme_support或enqueue_block_assets控制前端樣式的加載邏輯,確保

如何向用戶添加自定義字段 如何向用戶添加自定義字段 Jul 06, 2025 am 12:18 AM

要添加自定義用戶字段需根據(jù)平臺(tái)選擇擴(kuò)展方式並註意數(shù)據(jù)驗(yàn)證與權(quán)限控制。常見做法包括:1.利用數(shù)據(jù)庫(kù)額外表或鍵值對(duì)結(jié)構(gòu)存儲(chǔ)信息;2.在前端加入輸入框並與後端集成;3.對(duì)敏感數(shù)據(jù)進(jìn)行格式校驗(yàn)和訪問權(quán)限限制;4.更新接口及模板以支持新字段展示與編輯,同時(shí)兼顧移動(dòng)端適配和用戶體驗(yàn)。

如何添加自定義重寫規(guī)則 如何添加自定義重寫規(guī)則 Jul 08, 2025 am 12:11 AM

在WordPress中添加自定義重寫規(guī)則的關(guān)鍵在於使用add_rewrite_rule函數(shù)並確保規(guī)則正確生效。 1.使用add_rewrite_rule註冊(cè)規(guī)則,格式為add_rewrite_rule($regex,$redirect,$after),其中$regex是正則表達(dá)式匹配URL,$redirect指定實(shí)際查詢,$after控制規(guī)則位置;2.需通過add_filter添加自定義查詢變量;3.修改後必須刷新固定鏈接設(shè)置;4.建議將規(guī)則放在'top'以避免衝突;5.可藉助插件查看當(dāng)前規(guī)則便於

如何優(yōu)化WordPress機(jī)器人TXT 如何優(yōu)化WordPress機(jī)器人TXT Jul 13, 2025 am 12:37 AM

robots.txt對(duì)WordPress網(wǎng)站的SEO至關(guān)重要,能引導(dǎo)搜索引擎抓取行為,避免重複內(nèi)容並提升效率。 1.屏蔽如/wp-admin/、/wp-includes/等系統(tǒng)路徑,但避免誤封/uploads/目錄;2.添加Sitemap路徑如Sitemap:https://yourdomain.com/sitemap.xml以幫助搜索引擎快速發(fā)現(xiàn)站點(diǎn)地圖;3.限制/page/和帶參數(shù)的URL以減少爬蟲浪費(fèi),但需注意勿封重要?dú)w檔頁(yè);4.避免常見錯(cuò)誤如誤封全站、緩存插件影響更新及忽略移動(dòng)端與子域名配

如何介紹WordPress性能 如何介紹WordPress性能 Jul 07, 2025 am 12:43 AM

1.使用性能分析插件可快速定位問題,如QueryMonitor可查看數(shù)據(jù)庫(kù)查詢次數(shù)與PHP錯(cuò)誤,BlackboxProfiler生成函數(shù)執(zhí)行報(bào)告,NewRelic提供服務(wù)器級(jí)分析;2.分析PHP執(zhí)行性能需檢查耗時(shí)函數(shù)、調(diào)試工具使用及內(nèi)存分配情況,如Xdebug生成火焰圖輔助優(yōu)化;3.監(jiān)控?cái)?shù)據(jù)庫(kù)查詢效率可通過慢查詢?nèi)照I與索引檢查,QueryMonitor能列出所有SQL並按時(shí)間排序;4.結(jié)合GooglePageSpeedInsights、GTmetrix與WebPageTest等外部工具評(píng)估前端加

See all articles