2017-03-15 47 views
-1

如何測試一個方法是否與phpunit一起是靜態的?PHPUnit測試如果方法是靜態方法

我有一個靜態方法\ProcessWire\className::getModuleInfo,我想添加一個測試,以確保它是靜態的。我怎樣才能做到這一點?

+2

你爲什麼要測試?海事組織,這樣的測試沒有任何價值。當然,除非你正在研究一個代碼生成器並且想驗證它的輸出。 –

+0

爲了測試我是否可以調用靜態方法而不是創建類的新實例,然後才能調用它? – SheperdOfFire

+0

如果你不能靜態調用一個方法,php運行時會拋出一個異常。你不需要測試來做到這一點。這是一個嘗試測試PHP。你不需要測試php,你只需要測試你的域代碼。 – sensorario

回答

1

您可以使用Reflection確認的方法是static

<?php 
class Apple { 
    public function firstMethod() { } 
    final protected function secondMethod() { } 
    private static function thirdMethod() { } 
} 

$class = new ReflectionClass('Apple'); 
// Only return method data that is a static method 
$methods = $class->getMethods(ReflectionMethod::IS_STATIC); 
// shows information only for `thirdMethod()` 
var_dump($methods);