私が開発しているPHPアプリケーションの場合、現在のgitリビジョンSHAを読み取る必要があります。もちろん、shell_execまたはbackticksを使用してgitコマンドラインクライアントを実行することで簡単に取得できます。
私は明らかにこの呼び出しを独自のメソッドに入れているので、残りの単体テストでこれを簡単に分離してモックすることができます。したがって、私のクラスは次のようになります。
class Task_Bundle
{
public function execute()
{
// Do things
$revision = $this->git_sha();
// Do more things
}
protected function git_sha()
{
return `git rev-parse --short HEAD`;
}
}
もちろん、git_shaをモックすることでクラスのほとんどをテストできますが、既知の状態を作成する方法がわからないため、実際のgit_sha()メソッドをテストする方法を見つけるのに苦労しています。git rev-parse
結果を比較することも要求する単体テストには、実際の価値はないと思いますか?少なくともコマンドが実行されたことを主張することについて疑問に思っていましたが、PHPによって実行されたシェルコマンドの履歴を取得する方法がわかりません-PHPがSHではなくBASHを使用するように指定した場合でも、履歴リストが表示されます空です。個別のバックティックの実行は個別のターミナルセッションであるため、私は推測します。
これをテストする方法についての提案を聞きたいのですが、そのメソッドをテストせずにそのままにして、将来アプリを保守するときに注意してください。