模拟DB/SQL无脂肪框架(F3)phpunit

模拟DB/SQL无脂肪框架(F3)phpunit,phpunit,fat-free-framework,Phpunit,Fat Free Framework,我正在尝试为返回false或object的函数编写测试 class Environment { protected $db , $env, $envMapper= ""; public function __construct($dbConnection) { $this->db = $dbConnection; $this->setMapper($this->db); } public function

我正在尝试为返回false或object的函数编写测试

class Environment {


    protected $db , $env, $envMapper= "";

    public function __construct($dbConnection) {
        $this->db = $dbConnection;
        $this->setMapper($this->db);
    }


    public function setMapper($db){
        $this->envMapper=new DB\SQL\Mapper($this->db,'environment');
    }

    public function save($envName) {
        $this->envMapper->name = $envName;
        return $this->envMapper->save();
    }

    /**
     * @param $envId
     */
    public function get($envId) {

    }

    /***
     * @param $envName
     */
    public function getByName($envName) {

    }
} 
测试:

class EnvironmentTest extends PHPUnit_Framework_TestCase {

    protected $db = "";


    public function setup()
    {
        $this->db = $this->getMockBuilder('SqlHelper')
            ->setMethods(array('connect'))
            ->getMock();
    }


    public function testSave() {
        $object = new StdClass();
        $env = new Environment($this->db);
        $this->assertEquals($object, $env->save('Test'));
    }
}
我不知道我应该如何改变,使它将是可测试的,它总是返回

环境测试::测试保存 PHPUnit\u框架\u MockObject\u运行时异常:无法序列化或 取消序列化PDO实例


您无法序列化DB对象,这就是错误消息所说的。我不知道你或者PHPunit在哪里做这件事,但这显然是一个PDO限制。我认为下面的链接应该可以帮助你:你不应该在这个测试中使用模拟,因为你实际上不会测试任何东西。是的,我同意你的观点,但是现在测试并不有效,但是在F3中有类似依赖注入的东西,在路由到方法之前,我可以通过PDO对象或mapper对象传递构造函数值。现在,我无法找到任何其他选择,除了不测试它。