小编aco*_*ton的帖子

如何对执行命令行程序的PHP类方法进行单元测试?

对于我正在开发的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`;
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,虽然我可以通过模拟git_sha来测试大部分类,但我很难看到如何测试实际的git_sha()方法,因为我没有看到为它创建已知状态的方法.我不认为单元测试中有任何实际价值也要求git rev-parse比较结果?我想知道至少断言命令已经运行,但是我看不到任何方法来获取PHP执行的shell命令的历史 - 即使我指定PHP应该使用BASH而不是SH,历史列表会出现空,我认为因为单独的反引号执行是单独的终端会话.

我很想听听有关我如何测试这一点的任何建议,或者是否可以将该方法保持未经测试并在将来维护应用程序时要小心它?

php git phpunit unit-testing

1
推荐指数
1
解决办法
800
查看次数

标签 统计

git ×1

php ×1

phpunit ×1

unit-testing ×1