'sk-openai-test', 'services.openai.url' => 'https://api.openai.com/v1/chat/completions', 'services.openai.model' => 'gpt-5.4-mini', ]); Http::fake([ 'api.openai.com/*' => Http::response([ 'choices' => [['message' => ['content' => json_encode([ 'gesamt' => 'Testeinordnung.', 'spiegel' => [['nr' => 1, 'grad' => 'scharf', 'text' => 'Beleg.']], 'luecken' => [], 'stimmigkeit' => [], 'schluss' => 'Brücke zum Audit.', ])]]], ]), ]); artisan('klarheits-check:probe', ['--provider' => 'openai']) ->expectsOutputToContain('Szenario: Off-topic & Injection (Relevanz-/Missbrauchs-Schutz)') ->assertSuccessful(); // Vier Szenarien → vier KI-Anfragen. Http::assertSentCount(4); }); test('ein einzelnes szenario lässt sich gezielt ausführen', function () { config(['services.openai.api_key' => 'sk-openai-test']); Http::fake([ 'api.openai.com/*' => Http::response([ 'choices' => [['message' => ['content' => json_encode([ 'gesamt' => 'x', 'spiegel' => [], 'luecken' => [], 'stimmigkeit' => [], 'schluss' => 'y', ])]]], ]), ]); artisan('klarheits-check:probe', ['--provider' => 'openai', '--only' => 'scharf']) ->assertSuccessful(); Http::assertSentCount(1); }); test('ein unbekanntes szenario schlägt fehl', function () { artisan('klarheits-check:probe', ['--only' => 'gibtsnicht']) ->assertExitCode(1); });