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














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































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




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


















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
















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