对于我正在开发的 PHP 应用程序,我需要读取当前的 git 修订版 SHA,当然我可以通过使用 shell_exec 或反引号来执行 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 执行的 shell 命令的历史记录——即使我指定 PHP 应该使用 BASH 而不是 SH,历史列表也会出现空的,我想是因为单独的反引号执行是单独的终端会话。
我很想听听有关如何测试它的任何建议,或者是否可以不测试该方法并在将来维护应用程序时小心使用它?