ヘルパー ファイルにラッパー関数を作成して、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 を元に戻したい