2013-01-15 193 views
0

我的構造函數設置了從數據庫加載的數據的屬性。 如何測試它是否真的從db加載數據?我想要百分之百的測試覆蓋率,所以我需要測試我的每一段代碼。測試構造函數

<?php 
class PreferencesAdapter { 

    private $_preferences = NULL; 

    public function __construct() {   
       ... 
     $this->load(); 
       ... 
    } 

    public function load() { 
     ... 
     $this->_preferences= DataFromDb(); 
    } 
} 
?> 

回答

1

我在模擬load()在測試方法中,並驗證它在創建對象時被調用一次。

+0

請問您可以提供代碼示例嗎? –

0

(在快速測試的興趣,這裏是一個羅嗦的方法,你可以做的。)

或者,把你的相關查詢作爲一類PreferencesAdapterQueryCollection公共方法,並注入它作爲一個可選的構造函數參數PreferencesAdapter 。 (如果沒有發送參數,只需在那裏實例化PreferencesAdapterQueryCollection。)

在PreferencesAdapterTest中,發送模擬的PreferencesAdapterQueryCollection,其公共簡單查詢方法具有期望值和返回值。

我喜歡這種嘲笑。例如,請參閱問題Mockery - call_user_func_array() expects parameter 1 to be a valid callback調用。