public function testFailingDbTransaction() { $statement = Mockery::mock('\\PDOStatement'); $statement->shouldReceive('execute')->once()->andThrow(new \Exception('woopsies')); $pdo = Mockery::mock('\\PDO'); $pdo->shouldReceive('beginTransaction')->once()->andReturnNull(); $pdo->shouldReceive('prepare')->times(3)->andReturn($statement); $pdo->shouldReceive('execute')->times(3)->andReturn(); $pdo->shouldReceive('commit')->once()->andReturn(); $pdo->shouldReceive('rollBack')->once()->andReturn(); $conn = Mockery::mock('\\Fyuze\\Database\\Drivers\\ConnectionInterface'); $conn->shouldReceive('open')->once()->andReturn($pdo); $db = new Db($conn); $result = $db->transaction(function ($query) { $query->first('SELECT 1'); }); $this->assertFalse($result); }