《PHP設(shè)計(jì)模式介紹》第三章 工廠模式(7)_PHP教程
推薦:《PHP設(shè)計(jì)模式介紹》第二章 值對(duì)象模式在所有的最簡(jiǎn)單的程序中,大多數(shù)對(duì)象都有一個(gè)標(biāo)識(shí),一個(gè)重要的商業(yè)應(yīng)用對(duì)象,例如一個(gè)Customer或者一個(gè)SKU,有一個(gè)或者更多的屬性---id,name,email地址,這樣可以把它從同一個(gè)類的其他實(shí)例區(qū)分開
下面一個(gè)測(cè)試代碼就是測(cè)試 PropertyInfo 類的:
function testPropertyInfo() {
$list = array(‘type’,’price’,’color’,’rent’);
$this->assertIsA(
$testprop = new PropertyInfo($list), ‘PropertyInfo’);
foreach($list as $prop) {
$this->assertEqual($prop, $testprop->$prop);
}
}
這個(gè)測(cè)試證明:每個(gè)PropertyInfo類都有四個(gè)公共屬性,而且具有按精確次序排列的叁數(shù)。
但是因?yàn)閷?shí)例中 RailRoad 和 Utility 類并不需要顏色或者租用數(shù)據(jù), 所以我們需要測(cè)試PropertyInfo 也能引入少量的參數(shù)而實(shí)例化為RailRoad 和 Utility 類對(duì)象:
function testPropertyInfoMissingColorRent() {
$list = array(‘type’,’price’);
$this->assertIsA(
$testprop = new PropertyInfo($list), ‘PropertyInfo’);
$this->assertNoErrors();
foreach($list as $prop) {
$this->assertEqual($prop, $testprop->$prop);
}
$this->assertNull($testprop->color);
$this->assertNull($testprop->rent);
}
注:assertNoErrors()
assertNoErrors() 方法的作用是:證實(shí)沒有PHP 錯(cuò)誤發(fā)生。如果有錯(cuò)誤, 將不通過測(cè)試。
assertNull()
assertNull()方法的作用是:測(cè)試第一個(gè)參數(shù)是否為空。 如果第一個(gè)參數(shù)不為空, 將不通過測(cè)試。像大多數(shù)其他測(cè)試方法一樣,, 你可以選擇是否使用第二個(gè)叁數(shù)定義失敗信息。
為了滿足前面的測(cè)試,PropertyInfo 類定義為:
class PropertyInfo { |
現(xiàn)在以Assessor->$prop_info數(shù)組提供的數(shù)據(jù)為基礎(chǔ),新建一個(gè)實(shí)例化 PropertyInfo 的類。
這樣的代碼可以是:
class Assessor { |
但是,有一個(gè)問題: 這個(gè)方法不應(yīng)該是Assessor類的公共接口(API)的一個(gè)部份。它能被測(cè)試嗎?
這里有兩個(gè)方法, 可以探究任何要求的合理數(shù)量的測(cè)試。簡(jiǎn)單的說, 你可以運(yùn)行黑匣子測(cè)試或白匣子測(cè)試。
注:黑匣子測(cè)試(Black Box Testing)
黑匣子測(cè)試就是:把被測(cè)試的對(duì)象當(dāng)成" 黑匣子 " ,我們只知道它提供的應(yīng)用接口(API),但不知道其到底執(zhí)行了什么。它主要測(cè)試對(duì)象公共方法的輸入和輸出。
白匣子測(cè)試(White Box Testing)
白匣子測(cè)試和黑匣子測(cè)試恰恰相反, 它假定知道測(cè)試對(duì)象中的所有代碼信息。這種形式的測(cè)試是為了完善代碼和減少錯(cuò)誤。
關(guān)于白匣子測(cè)試的詳細(xì)說明請(qǐng)見:http:// c 2.com/cgi/wiki?WhiteBoxTesting 。
分享:《PHP設(shè)計(jì)模式介紹》第一章 編程慣用法學(xué)習(xí)一門新的語言意味著要采用新的慣用法。這章將介紹或者可能重新強(qiáng)調(diào)一些慣用法。你會(huì)發(fā)現(xiàn)這些慣用法在你要在代碼中實(shí)現(xiàn)設(shè)計(jì)模式時(shí)候是非常有用的。 在這里總結(jié)的許多編程慣用法都是很值得
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-《PHP設(shè)計(jì)模式介紹》第三章 工廠模式(7)。