getProperty('_instances'); $prop->setAccessible(true); $prop->setValue(null, []); $ref = new ReflectionClass(Config::class); $prop = $ref->getProperty('config'); $prop->setAccessible(true); $prop->setValue(null, null); } public function testDefaultConnectionReturnsPdoDriver(): void { $this->assertInstanceOf(PdoDriver::class, Database::instance()); } public function testInstanceIsCachedPerConnectionName(): void { $this->assertSame(Database::instance('default'), Database::instance('default')); } public function testDifferentConnectionNamesAreDistinctInstances(): void { Config::set('db', [ 'default' => ['driver' => 'pdo', 'connection' => ['host' => 'db', 'dbname' => 'a']], 'second' => ['driver' => 'pdo', 'connection' => ['host' => 'db', 'dbname' => 'b']], ]); $this->assertNotSame(Database::instance('default'), Database::instance('second')); } public function testUnknownConnectionNameThrows(): void { $this->expectException(MyException::class); Database::instance('nonexistent'); } public function testUnknownDriverThrows(): void { Config::set('db', ['bad' => ['driver' => 'mysqli', 'connection' => []]]); $this->expectException(MyException::class); Database::instance('bad'); } }