我正在为专业项目使用PDO和PHPUnit。
这是一种方法,在我的代码库中,我想测试:
public function signUp('PDO $pdo)
{
$statement = $pdo->prepare("INSERT INTO user VALUES (
DEFAULT,
:firstName,
:lastName,
:salutation,
:birthday,
:email,
:password
)");
$statement->bindValue(':firstName', $this->firstName);
$statement->bindValue(':lastName', $this->lastName);
// Etc...
if($statement->execute()) {
$this->id = $pdo->lastInsertId();
return $this->id;
}
return 0;
}
我想找到一种方法,使我的$statement->execute()
失败,并根据PDO文档返回false
以及测试方法,我想实现:
testSignupInsertRowFailAndReturnZeroValue()
测试这个有意义吗?
编辑
这里有一个简单的Mock解决方案:
$pdoMock = $this->getMockBuilder('PDO')
->disableOriginalConstructor()
->getMock();
$pdoMock->method("prepare")
->will($this->returnValue(new 'PDOStatement()));
execute
根据单据返回成功true
,失败false
。
如果我正确理解你的问题,你可以用之类的东西来检查你的查询是否失败
if($statement->execute()) {
// success
}
else{
// failure
}