/** * @covers Veles\DataBase\Adapters\PdoAdapter::escape * * @expectedException \Veles\DataBase\Exceptions\DbException */ public function testEscapeException() { $exception_msg = 'SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer'; $resource = $this->getMockBuilder('\\PDO')->disableOriginalConstructor()->setMethods(['quote'])->getMock(); $resource->expects($this->once())->method('quote')->will($this->throwException(new \PDOException($exception_msg))); $conn = $this->getMockBuilder('\\Veles\\DataBase\\Connections\\PdoConnection')->setConstructorArgs(['master'])->setMethods(['getResource'])->getMock(); $conn->expects($this->once())->method('getResource')->willReturn($resource); $pool = $this->getMockBuilder('\\Veles\\DataBase\\ConnectionPools\\ConnectionPool')->setMethods(['getConnection'])->getMock(); $pool->expects($this->once())->method('getConnection')->willReturn($conn); $this->object->setPool($pool); $this->object->escape('string'); }
public function run() { $this->prepareTables(); $repeats = $this->getRepeats(); $value1 = 'string one'; $value2 = 'string two'; $value3 = 'string three'; $bar = new CliProgressBar($repeats); for ($i = 1; $i <= $repeats; ++$i) { Timer::start(); $sql = ' INSERT INTO test (txt) VALUES (?), (?), (?) '; Db::query($sql, [$value1, $value2, $value3]); Timer::stop(); $bar->update($i); } $this->addResult('Real', Timer::get()); PdoAdapter::instance()->getConnection()->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); Timer::reset(); $bar = new CliProgressBar($repeats); for ($i = 1; $i <= $repeats; ++$i) { Timer::start(); $sql = ' INSERT INTO test (txt) VALUES (?), (?), (?) '; Db::query($sql, [$value1, $value2, $value3]); Timer::stop(); $bar->update($i); } $this->addResult('Emulated', Timer::get()); $this->cleanup(); }