我有一些使用mysqli的数据库类。例如:
class MyDB
{
function __construct($db)
{
$this->db = $db;
}
function add($name)
{
$sql = "INSERT INTO mytable (name) VALUES ('$name');"
$this->db->query($sql);
if ($this->db->affected_rows) {
return $this->db->insert_id;
}
return 0;
}
...
我想用phpunit测试它们,使用sqlite内存数据库。但是,正如预期的那样,我收到了这个错误:
未定义的属性:PDO :: $ affected_rows
根据文件:
PDO仅用于夹具清洁和设置以及断言。您可以在自己的代码中使用任何数据库抽象。
我怀疑这只意味着我必须为与PDO兼容的mysqli创建一个包装器。或者有没有办法测试我的代码而不将其转换为使用PDO?
答案 0 :(得分:1)
Mysqli对象和PDO对象不兼容。您正在将PDO对象传递给期望mysqli对象的代码。如果你有要测试的mysqli代码,你有两个选择:
我不会写一个包装器。这引入了本身需要测试的不必要的复杂性。如果你要花费那么多精力,你也可以把它转换成PDO。