@@ -41,44 +41,44 @@ public function testMethodCallIsForwardedToPDO(): void
4141 $ this ->assertSame ($ pdoStatementMock , $ result );
4242 }
4343
44- // public function testLostConnectionRetriesCall(): void
45- // {
46- // $dsn = 'sqlite::memory:';
47- // $pdoWrapper = $this->getMockBuilder(PDO::class)
48- // ->setConstructorArgs([$dsn, null, null, []])
49- // ->onlyMethods(['reconnect'])
50- // ->getMock();
51- //
52- // $pdoMock = $this->getMockBuilder(\PDO::class)
53- // ->disableOriginalConstructor()
54- // ->getMock();
55- // $pdoStatementMock = $this->getMockBuilder(\PDOStatement::class)
56- // ->disableOriginalConstructor()
57- // ->getMock();
58- //
59- // $pdoMock->expects($this->exactly(2))
60- // ->method('query')
61- // ->with('SELECT 1')
62- // ->will($this->onConsecutiveCalls(
63- // $this->throwException(new \Exception("Lost connection")),
64- // $pdoStatementMock
65- // ));
66- //
67- // $reflection = new ReflectionClass($pdoWrapper);
68- // $pdoProperty = $reflection->getProperty('pdo');
69- // $pdoProperty->setAccessible(true);
70- // $pdoProperty->setValue($pdoWrapper, $pdoMock);
71- //
72- // $pdoWrapper->expects($this->once())
73- // ->method('reconnect')
74- // ->willReturnCallback(function () use ($pdoWrapper, $pdoMock, $pdoProperty) {
75- // $pdoProperty->setValue($pdoWrapper, $pdoMock);
76- // });
77- //
78- // $result = $pdoWrapper->query('SELECT 1');
79- //
80- // $this->assertSame($pdoStatementMock, $result);
81- // }
44+ public function testLostConnectionRetriesCall (): void
45+ {
46+ $ dsn = 'sqlite::memory: ' ;
47+ $ pdoWrapper = $ this ->getMockBuilder (PDO ::class)
48+ ->setConstructorArgs ([$ dsn , null , null , []])
49+ ->onlyMethods (['reconnect ' ])
50+ ->getMock ();
51+
52+ $ pdoMock = $ this ->getMockBuilder (\PDO ::class)
53+ ->disableOriginalConstructor ()
54+ ->getMock ();
55+ $ pdoStatementMock = $ this ->getMockBuilder (\PDOStatement::class)
56+ ->disableOriginalConstructor ()
57+ ->getMock ();
58+
59+ $ pdoMock ->expects ($ this ->exactly (2 ))
60+ ->method ('query ' )
61+ ->with ('SELECT 1 ' )
62+ ->will ($ this ->onConsecutiveCalls (
63+ $ this ->throwException (new \Exception ("Lost connection " )),
64+ $ pdoStatementMock
65+ ));
66+
67+ $ reflection = new ReflectionClass ($ pdoWrapper );
68+ $ pdoProperty = $ reflection ->getProperty ('pdo ' );
69+ $ pdoProperty ->setAccessible (true );
70+ $ pdoProperty ->setValue ($ pdoWrapper , $ pdoMock );
71+
72+ $ pdoWrapper ->expects ($ this ->once ())
73+ ->method ('reconnect ' )
74+ ->willReturnCallback (function () use ($ pdoWrapper , $ pdoMock , $ pdoProperty ) {
75+ $ pdoProperty ->setValue ($ pdoWrapper , $ pdoMock );
76+ });
77+
78+ $ result = $ pdoWrapper ->query ('SELECT 1 ' );
79+
80+ $ this ->assertSame ($ pdoStatementMock , $ result );
81+ }
8282
8383 public function testNonLostConnectionExceptionIsRethrown (): void
8484 {
0 commit comments