2016-12-10 86 views
0

我有下面的類:PHPT避免構造函數和目標函數直接

class Validator { 
public function __construct($file){     
    $errors = $this->errors($file_array[CSV]['errors']); 
    } 
public function errors_func($errors){ 
    if($errors != 0){ 
    throw new Exception('Error Uploading'); 
    } 
} 
} 

我試圖直接通過我的測試腳本針對errors_func()功能,而不需要先調用構造函數。該PHPT測試腳本可以看到下面:

--TEST-- 
check_mime() function - A basic test to see if check mime works. :) 
--FILE-- 

    <?php 
    require_once('my/path'); 
    $valid = new Validation; 
    $re = $valid->errors_func('1); 
    var_dump($re); 
    ?> 
    --EXPECT-- 
    bool(true) 

正如你所期望的,雖然監守創建該類的對象時的參數,預計測試腳本失敗。有沒有辦法創建一個Validation類的對象,而無需將參數傳遞給__constructer類?

+0

重寫你的類,然後 –

+0

@u_mulder上面的例子是類的一個非常簡化的版本,可惜我不是在一個位置,重構類 –

+0

然後你就可以什麼都不做。 –

回答

0

我找到了解決方案,通過使用ReflectionClass。新的測試腳本應該是這樣的:

--TEST-- 
check_mime() function - A basic test to see if check mime works. :) 
--FILE-- 

    <?php 
    require_once('my/path'); 
    $valid = new ReflectionClass('Validator'); 
    $valid_direct = $valid->newInstanceWithoutConstructor(); 
    $re = $valid_direct->errors_func('1); 
    var_dump($re); 
    ?> 
    --EXPECT-- 
    bool(true)