schema(); $db2_connection = Database::getConnection('default', 'extra'); // Get the prefix info for the first database. $method = new \ReflectionMethod($db1_schema, 'getPrefixInfo'); $method->setAccessible(TRUE); $db1_info = $method->invoke($db1_schema); // We change the database after opening the connection, so as to prevent // connecting to a non-existent database. $reflection = new \ReflectionObject($db2_connection); $property = $reflection->getProperty('connectionOptions'); $property->setAccessible(TRUE); $connection_info['default']['database'] = 'foobar'; $property->setValue($db2_connection, $connection_info['default']); // For testing purposes, we also change the database info. $reflection_class = new \ReflectionClass('Drupal\Core\Database\Database'); $property = $reflection_class->getProperty('databaseInfo'); $property->setAccessible(TRUE); $info = $property->getValue(); $info['extra']['default']['database'] = 'foobar'; $property->setValue(NULL, $info); $extra_info = Database::getConnectionInfo('extra'); $this->assertSame($extra_info['default']['database'], 'foobar'); $db2_schema = $db2_connection->schema(); $db2_info = $method->invoke($db2_schema); $this->assertNotSame($db2_info['database'], $db1_info['database'], 'Each target connection has a different database.'); $this->assertSame($db2_info['database'], 'foobar', 'The new profile has a different database.'); Database::removeConnection('extra'); } } }