1
有這個代碼如何單元測試一個PHP method_exists()
<?php
public function trueOrFalse($handler) {
if (method_exists($handler, 'isTrueOrFalse')) {
$result= $handler::isTrueOrFalse;
return $result;
} else {
return FALSE;
}
}
你會如何單元測試呢?有沒有機會嘲笑$handler
?很顯然,我需要某種形式的
<?php
$handlerMock= \Mockery::mock(MyClass::class);
$handlerMock->shouldReceive('method_exists')->andReturn(TRUE);
,但它不能做
爲什麼你創建'trueOrFalse'方法你可以在代碼中檢查'method_exists',因爲如果方法存在'isTrue'並且總是返回'true',你可以簡單地將其替換爲單個'method_exists()',但是如果你使用方法'isTrue '你可以簡單的返回evrything數據'if(!method_exists)返回false'或者多個數據,或者你可以創建抽象類並將此方法設置爲parrenting的要求。附:對不起我的英語不好。 – Naumov
這只是簡化。事實上'isTrue'返回布爾值(假或真)作爲其結果。所以問題是,是否有機會像現在這樣測試它,或者需要重構?在那種情況下,是的,我可能需要從方法 – user3350906