Zum Hauptinhalt springen
In Laravel können Sie folgende Testcodes schreiben.

Copilot::fake()

Copilot::fake() ist ein Mock für Funktionen, die über die Copilot-Facade genutzt werden. Andere Funktionen werden nicht gemockt.
use Revolution\Copilot\Facades\Copilot;

Copilot::fake('2'); // Mock, der immer '2' zurückgibt

$response = Copilot::run(prompt: '1 + 1'); // Hier wird die Copilot CLI tatsächlich nicht aufgerufen

// Pest
expect($response->content())->toBe('2');
// PHPUnit
$this->assertEquals('2', $response->content());
Bei mehreren Aufrufen innerhalb von Copilot::start.
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Contracts\CopilotSession;

Copilot::fake([
    '*' => Copilot::sequence()
            ->push(Copilot::response('2'))
            ->push(Copilot::response('4')),
]);

Copilot::start(function (CopilotSession $session) use (&$response1, &$response2) {
    $response1 = $session->sendAndWait(prompt: '1 + 1'); // gibt '2' zurück
    $response2 = $session->sendAndWait(prompt: '2 + 2'); // gibt '4' zurück
});

expect($response1->content())->toBe('2');

Assertions

Prüfen, dass ein bestimmter Prompt aufgerufen wurde.
Copilot::assertPrompt('1 + *');
Prüfen, dass ein Prompt nicht aufgerufen wurde.
Copilot::assertNotPrompt('1 + *');
Prüfen, wie oft Prompts aufgerufen wurden.
Copilot::assertPromptCount(3);
Prüfen, dass kein einziger Prompt aufgerufen wurde.
Copilot::assertNothingSent();

Prevent stray requests

Verhindert alle JSON-RPC-Requests. Bei einem Aufruf wird die Ausnahme Revolution\Copilot\Exceptions\StrayRequestException geworfen.
Copilot::preventStrayRequests();
Um nur bestimmte Kommandos zu erlauben.
Copilot::preventStrayRequests(allow: ['ping']);
Verhindern deaktivieren.
Copilot::preventStrayRequests(false);
Da nur JSON-RPC-Requests verhindert werden, wird Client::start() nicht blockiert.

Möglicherweise nicht korrekt funktionierende Verwendung

Wenn Sie Copilot innerhalb eines Artisan-Commands nutzen, ist das Mocking mit fake() wirksam, doch nachgelagerte Aufrufe wie assertPrompt() funktionieren unter Umständen nicht korrekt. Da es hier wenige Anwendungsbeispiele gibt, ist dies noch in Untersuchung.
use Revolution\Copilot\Facades\Copilot;

Copilot::fake('Hello');

$this->artisan('copilot:hi');

Copilot::assertPrompt('Hi');

shouldReceive() / expects()

Die von Mockery gewohnten shouldReceive() und expects() können Sie selbstverständlich ebenfalls nutzen. Da diese Funktionen bei Verwendung der Facade automatisch unterstützt werden, entfällt eine Erläuterung.
Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 13. Juli 2026