PHP單元測試?yán)?PHPUNIT深入用法(三)
Phpunit中的Mocking
在介紹Mocking前,先來看下為什么要使用Mocking。舉一個數(shù)據(jù)庫查詢的例子,比如在某個應(yīng)用中,如果要測試一個數(shù)據(jù)庫的應(yīng)用,但假如這個數(shù)據(jù)庫的測試要耗費很多資源以及編寫很復(fù)雜的單元測試的代碼的話,可以嘗試使用Mocking技術(shù)。舉例說明如下:














在上面這個例子中,我們模擬了一個數(shù)據(jù)庫的操作,認為它需要運行很長時間。接下來我們編寫其單元測試代碼如下:































注意看這段代碼中有趣的地方,這里,使用了phpunit中的getMock對象方法,這里實際上是模擬生成一個Database類的“偽實例”了,這里生成了$mock這個mock對象實例,以方便接著的單元測試中用到。接下來的這三行代碼:




它們的含義為:無論方法reallyLongtime執(zhí)行了多長時間,始終最后會直接返回$result這個數(shù)組的結(jié)果。這樣,你就可以通過mocking技術(shù)很輕易地去實現(xiàn)在單元測試中,繞過某些復(fù)雜的邏輯部分,而節(jié)省大量的寶貴時間提高測試效率。
下面的這個例子,講解的是Mocking技術(shù)中的更高級用法Mockbuilder。依然以上面的例子說明:


















通過使用Mockbuilder,我們可以不用通過構(gòu)造函數(shù)的方法去初始化一個mock對象。這段代碼跟上一段代碼的功能其實是一樣的,只不過留意一下新的兩個方法: disableAutoload和disableOriginalConstructor,其功能分別是禁止使用php的內(nèi)置的autoload初始構(gòu)造方法和禁止調(diào)用該類原有的構(gòu)造函數(shù)。最后再看一個例子:
















在這里,我們使用了with方法,其中這個方法中指定了要傳入的參數(shù)類型為array數(shù)組類型,最后這個斷言是通過了,因為返回的的確是數(shù)組類型。
更多的關(guān)于phpunit中mock的用法,請參考phpunit手冊中第11章的論述。
- Windows下安裝PHP單元測試環(huán)境PHPUnit圖文教程
- PHP單元測試?yán)?PHPUNIT初探
- PHP單元測試?yán)?PHPUNIT深入用法(二)
- PHP單元測試PHPUnit簡單用法示例
- PHP單元測試框架PHPUnit用法詳解
- 使用PHPUnit進行單元測試并生成代碼覆蓋率報告的方法
- php單元測試phpunit入門實例教程
- PHP使用phpunit進行單元測試示例
- PHPUnit + Laravel單元測試常用技能
- Windows下wamp php單元測試工具PHPUnit安裝及生成日志文件配置方法
- laravel單元測試之phpUnit中old()函數(shù)報錯解決
- PHPUnit 單元測試安裝與使用入門教程
相關(guān)文章
PHP下利用shell后臺運行PHP腳本,并獲取該腳本的Process ID的代碼
PHP下利用shell后臺運行PHP腳本,并獲取該腳本的Process ID的代碼,學(xué)習(xí)php的朋友可以參考下。2011-09-09解析array splice的移除數(shù)組中指定鍵的值,返回一個新的數(shù)組
array_splice這個數(shù)組函數(shù)在w3school的解釋是把數(shù)組中的一部分去掉并用其它值取代。所以我在做數(shù)組移除的時候沒有考慮到用這個函數(shù),或者因為從來沒有用過2013-07-07一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
以下是一些PHP Coding Tips. 當(dāng)然, 這些Tips并不一定僅僅局限于PHP.大家有什么好的心得, 歡迎直接回復(fù)本文與更多的人分享.. 謝謝2011-05-05解析phpstorm + xdebug 遠程斷點調(diào)試
本篇文章是對phpstorm + xdebug 遠程斷點調(diào)試進行了詳細的分析介紹,需要的朋友參考下2013-06-06