我正在使用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 documentation
false
测试方法,我想实现:
testSignupInsertRowFailAndReturnZeroValue()
测试这个是否有意义?
修改
这是一个简单模拟的解决方案:
$pdoMock = $this->getMockBuilder('PDO')
->disableOriginalConstructor()
->getMock();
$pdoMock->method("prepare")
->will($this->returnValue(new \PDOStatement()));
答案 0 :(得分:0)
execute
会在成功时返回true
,并在失败时返回false
。
如果我正确理解您的问题,您可以检查您的查询是否失败,例如:
if($statement->execute()) {
// success
}
else{
// failure
}