哈囉,大家好!讓我們延續單元測試議題,在這篇文章中,我想和大家聊聊單元測試的延伸議題,重構的重要性,特別是它如何為我們的程式碼提供一層安全防線,讓我們在重構時可...
哈囉,大家好!經過前面的努力,我們已經建立了個人財務管理系統的基本功能。現在,是時候來確保我們的程式碼品質了。今天,我想和大家聊聊單元測試,以及它為什麼不僅僅是...
Pest 是由 PHPUnit 包裝和新增一些功能而成,它可以使用原本的 PHPUnit 語法,也可以使用更簡潔美觀方式撰寫測試程式 移除 PHPUnit 因...
最後一篇就來說說挑戰30天的想法吧 第一次挑戰連寫30天真的還滿困難的,而且寫到第3天時發現這一系列的內容應該比較適合用影音的方式來呈現,但選錯組別也就只好硬寫...
在上一篇我們抽出了一個 Base 的抽象類別,今天我們換一個方式重構 原本 Home 及 Base 的程式如下 <?php namespace Recc...
到目前為止我們已經能把 Ptt 的文章全部抓取回來了,也算是完成了我們目前的所有需求了,但我們再去 code review 會發現有一些重覆的程式碼 const...
在上一篇我們的 Mock 對象已經改為 ClientInterface,那究竟將不能使用 PHPVCR 報替代 mock ClientInterface 呢?...
在上一篇我們是 mock 的對象是 Home 以及 Board,但會發現一件事情,當我們的 Home 或 Board 這兩隻程式的回傳值一但變更是完全不會反應該...
這一篇我們就來討論 PttCrawler 如何進行測試,首頁我們先來看看我們目前『可能』的程式碼 <?php // src/PttCrawler.php...
在我們要完成 PttCrawler 這隻程式之前,我們再 review 一下 PttCrawler 的程式碼(這是上次隨意撰寫的程式碼,所以程式不一定能夠正常執...
PHPUnit 是 php 的單元測試工具,它可以幫我們檢查程式是否有錯誤,不過驗證有沒有錯的程式還是需要自己寫,但是可以重複使用,也就是說不用再一直手動把變數...
以 批踢踢實業坊›看板 Gossiping 這一頁來說將近 4萬頁的資訊,如果我們是照現有程式的做法會面臨到幾個問題 看版及分頁過多會遇到記憶體不足 Exce...
在上一篇我們只處理了文章列表,並沒有處理分頁問題,所以這次我們把分頁的程式碼加上去 首先我們先用這段程式碼來分析出『最舊、上頁、下頁、最新』的連結,並調整程式碼...
在上一篇最終定義出最終結果希望為 <?php namespace Recca0120\Ithome30\Tests; use Mockery; us...
在上一篇我們已將程式重構為 <?php // src/PttCrawler.php namespace Recca0120\Ithome30; use...
在上篇我們提到希望最終的程式碼是呈現這樣 $crawler = new PttCrawler(); // 抓取所有看版及文章 $crawler->all(...
在上一篇我們把任務拆成 抓取熱門看版 抓取熱門看版文章 以目前的程式,我們似乎完成了『抓取熱門看版』的程式,在進行下一個步驟前,我們先來 code revi...
現在我們已經具備一些 PHPUnit 的使用方式之後,我們接下來就可以用 TDD 的方式來進行程式撰寫。所以我們現在來定義我們希望這個爬蟲要完成哪些功能。 任務...
這 14 天以來的文章我們可以練習到 使用 cli 執行 PHPUnit VSCode 使用 PHPUnit Test Explorer 執行 PHPUnit...
在之前介紹爬蟲的測試程式,我們是自己將 HTML 另存檔案,再利用 Mockery 來回傳 HTML,因為我們這次的範例只抓了一頁,所以另存新檔我們只需操作一...
在上一篇我們的測試程式如下 <?php namespace Recca0120\Ithome30\Tests; use Mockery; use G...
在上一篇我們是新增一個 HttpClient 的 interface 後,再實作一個 GuzzleHttpClient,但實際去看 Guzzle 的 Clie...
我們的 PTTCrawler 目前是注入自己撰寫的 HttpClient class,但 PHP 早就有寫好的 Guzzle 啊,所以我們就可以透過重構的方式來...
在上一篇我們把程式改為『依賴注入』的方式,最終的測試案例的程式碼為 <?php // tests/PttCrawlerTest namespace R...
在上一篇我們是使用 Extract Method 的方式來寫爬蟲,這一篇我們來改用『依賴注入』的方式來重構程式碼那 Extract Method 和 依賴注入...
今天我們就來試試在 PHPUnit 裡寫爬蟲,我們就來爬PTT的首頁吧 建立測試案例 我們可以很快速的建立第一個測試案例,寫完測試案例後立刻執行一次測試得到紅...
什麼是重構 重構就是『在不改變外部行為的狀況下,改變程式結構或擴充程式功能』,所以我們在調整程式結構的時候就會希望滿足以下條件 確認修改後的程式執行結果不變...
什麼是重構 重構就是『在不改變外部行為的狀況下,改變程式結構或擴充程式功能』,所以我們在調整程式結構的時候就會希望滿足以下條件 確認修改後的程式執行結果不變...
花了二篇的篇幅來介紹怎麼讓 VSCode 來幫助自己寫測試,那怎麼可以不介紹大名鼎鼎的 PHPStorm 呢? PHPStorm 是個訂閱制的付費軟體當然功能上...
在上一篇中我們已經知道 PHPUnit 怎麼用了,但要產生測試 code 而且還得從編輯器切換到 cli 之後再執行vendor/bin/phpunit,這樣實...