1

ヘルパー ファイルにラッパー関数を作成して、getTimestamp() などのグローバルに使用されるメソッドをラップしました。ヘルパー ファイルは、テストしているファイル (「モデル ファイル」) と同じ名前空間 (「Project\Models\TeamName」のような名前空間) に配置されます。仮想モデル ファイルは getTimestamp() 関数を使用し、生年月日からチェックする計算を行います。計算でエッジ ケースをテストしたいので、'getTimestamp()' 関数をオーバーライドして、ヘルパー ファイルで常に 125 を返すようにしました。

ただし、これにより、getTimpestamp() を使用する他の phpunit テストが失敗します。ヘルパー ファイルの「require_once」が取り消され、残りの phpunit テストがパスするようにするにはどうすればよいですか? phpunit テスト クラスと SUT は、離れた名前空間にあります。

現在、PHPUnit クラスがあります (Project\Testing\PHPUnit\Models\TeamName にあります)。

namespace Project\Testing\PHPUnit\Models\TeamName;
require_once '/testing/phpunit/models/teamname/testHelper.php';

use Project\Models\TeamName\MyModel

class MyModelTest {
    const correctAge = 75; 

    public function testAge(){
        $model = new MyModel(); 
        $result = $model -> calculateAgeFromBirthYear(50);
        assertEquals(self::correctAge, $result); 
    }
}

ヘルパー ファイル (Project\Testing\PHPUnit\Models\TeamName にあります)

namespace Project\Models\TeamName; 
function getTimestamp(){
    //today is year 125
    return 125; 
}

SUT/モデル (Project\Models\TeamName にある)

namespace Project\Models\TeamName; 
class MyModel {
    function calculateAgeFromBirthYear($birthYear){
        $date = new DateTime();
        $today = $date->getTimestamp(); 
        return $today - $birthYear;
    }
}

常に 125 を返す getTimestamp() を他の phpunit クラスに継承させたくないので、require_once を元に戻したい

4

1 に答える 1