/** * Execute a failing query * * @covers ::query * @expectedException \ITC\DataSource\Database\Exception * @test */ public function queryFailure() { // Mock mysqli instance $mysqliMock = $this->getMockBuilder('\\mysqli')->disableOriginalConstructor()->setMethods(array('prepare', 'real_escape_string'))->getMock(); // Get client $client = new \ITC\DataSource\Database\Client($mysqliMock); // Mock mysqli stmt instance which will be returned by // mysqli mock $mysqliStatementMock = $this->getMockBuilder('\\mysqli_stmt')->disableOriginalConstructor()->setMethods(array('execute', 'close'))->getMock(); // Mock prepare method to return mysqli stmt $mysqliMock->expects($this->once())->method('prepare')->will($this->returnValue($mysqliStatementMock)); // Expect statment to be executed $mysqliStatementMock->expects($this->once())->method('execute')->will($this->returnValue(false)); // Expect statment to be closed $mysqliStatementMock->expects($this->once())->method('close')->will($this->returnValue(true)); // Execute query $client->query('TRUNCATE `users`'); }