模拟DB/SQL无脂肪框架(F3)phpunit
我正在尝试为返回false或object的函数编写测试模拟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
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对象传递构造函数值。现在,我无法找到任何其他选择,除了不测试它。