path('')); $this->assertStringContainsString( 'framework/testing', $root, 'settings 디스크가 페이크로 대체되지 않았습니다 — 테스트가 실제 설정 파일을 덮어씁니다.' ); $this->assertStringNotContainsString( 'storage/app/settings', $root, 'settings 디스크가 실제 설정 경로를 가리킵니다.' ); } /** * 설정을 저장해도 실제 설정 파일이 만들어지지 않는지 확인합니다. */ public function test_saving_settings_does_not_write_to_real_storage_path(): void { $realPath = storage_path('app/settings/general.json'); $before = file_exists($realPath) ? file_get_contents($realPath) : null; app(ConfigRepositoryInterface::class)->saveCategory('general', [ 'site_name' => '격리 검증용 값', 'language' => 'ja', ]); $after = file_exists($realPath) ? file_get_contents($realPath) : null; $this->assertSame($before, $after, '설정 저장이 실제 설정 파일을 변경했습니다.'); // 저장 자체는 페이크 디스크에서 정상 동작해야 한다 (격리가 기능을 죽이면 안 됨) Storage::disk('settings')->assertExists('general.json'); $this->assertSame( '격리 검증용 값', app(ConfigRepositoryInterface::class)->getCategory('general')['site_name'] ); } }