두려운 MySql을 모방 한 단위 테스트를 작성하는 중 오류가 발생했지만 내 모의 객체가 올바르게 응답하는 데 문제가 있습니다. 어쩌면 누군가 내가 잘못하고있는 것을 볼 수 있습니다.PDOException 클래스가 응답하지 않습니다.
private function getMockGoneAway()
{
$e = $this->getMockBuilder('PDOException')
->disableOriginalConstructor()
->setMethods([
'getMessage',
'getCode',
])
->getMock();
$e->expects($this->any())
->method('getMessage')
->willReturn('SQLSTATE[HY000]: General error: 2006 MySQL server has gone away');
$e->expects($this->any())
->method('getCode')
->willReturn('HY000');
return $e;
}
이것은 테스트입니다. 문제는 그것이 어디서 발생하든 getMessage 또는 getCode에서 의도 한 결과를 반환하는 mock 예외를 얻을 수 없다는 것입니다.
public function testBeginTransactionGoneAway()
{
// get a mock PDO object that overrides beginTransaction method
$mock_pdo = $this->getMockPdo(['beginTransaction']);
// grab a mock gone-away exception object
$mock_gone_away_exception = $this->getMockGoneAway();
die("MSG: ".$mock_gone_away_exception->getMessage());
// setup mock pdo responses
$mock_pdo->expects($this->once())
->method('beginTransaction')
->will($this->throwException($mock_gone_away_exception));
$this->db->replaceConnection($mock_pdo);
$this->db->begin();
}