markTestSkipped('oci8 is not installed.'); } parent::setUp(); } /** * This scenario shows that when the first parameter is not null * it properly sets $hasZeroIndex to 1 and calls bindValue starting at 1. * * This also verifies that the statement will check with the connection to * see what the current execution mode is. * * The expected exception is due to oci_execute failing due to no valid connection. * * @dataProvider executeDataProvider * @expectedException \Doctrine\DBAL\Driver\OCI8\OCI8Exception */ public function testExecute(array $params) { $statement = $this->getMock('\Doctrine\DBAL\Driver\OCI8\OCI8Statement', array('bindValue', 'errorInfo'), array(), '', false); $statement->expects($this->at(0)) ->method('bindValue') ->with( $this->equalTo(1), $this->equalTo($params[0]) ); $statement->expects($this->at(1)) ->method('bindValue') ->with( $this->equalTo(2), $this->equalTo($params[1]) ); $statement->expects($this->at(2)) ->method('bindValue') ->with( $this->equalTo(3), $this->equalTo($params[2]) ); // can't pass to constructor since we don't have a real database handle, // but execute must check the connection for the executeMode $conn = $this->getMock('\Doctrine\DBAL\Driver\OCI8\OCI8Connection', array('getExecuteMode'), array(), '', false); $conn->expects($this->once()) ->method('getExecuteMode'); $reflProperty = new \ReflectionProperty($statement, '_conn'); $reflProperty->setAccessible(true); $reflProperty->setValue($statement, $conn); $statement->execute($params); } public static function executeDataProvider() { return array( // $hasZeroIndex = isset($params[0]); == true array( array(0 => 'test', 1 => null, 2 => 'value') ), // $hasZeroIndex = isset($params[0]); == false array( array(0 => null, 1 => 'test', 2 => 'value') ) ); } }