在PHP单元中模拟方法的一部分

时间:2018-07-23 12:25:48

标签: php mocking phpunit

如何在以下功能的PHP Unit中存根数据库查询结果?

     public function getName($id){
        $db = new mysqli("localhost", "username", "password", "dbname");
        $result = $db->query("SELECT firstname FROM employees WHERE id=" . $id ."limit 1");

        $greeting = 'Hello, my name is' . $result[0];
        return $greeting;
    }

1 个答案:

答案 0 :(得分:0)

请考虑使用Dependency injection作为良好答案。但是您甚至可以在测试中嘲笑Mysqli。在您的php测试类中插入下面的代码,在运行时它将通过下面的定义替换mysqli和函数query

namespace Name\Space\Of\Your\Php\File\To\Test {
    class mysqli {
        function query(): string
        {
            return '';
        }
    }
}