Vai al contenuto principale
Con Laravel puoi scrivere codice di test come questo.

Copilot::fake()

Copilot::fake() è un mock per le funzionalità usate tramite il Facade Copilot. Non fa il mock di altre funzionalità.
use Revolution\Copilot\Facades\Copilot;

Copilot::fake('2'); // mock che restituisce sempre '2'

$response = Copilot::run(prompt: '1 + 1'); // qui la Copilot CLI non viene realmente invocata

// Pest
expect($response->content())->toBe('2');
// PHPUnit
$this->assertEquals('2', $response->content());
Con più chiamate all’interno di 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'); // restituisce '2'
    $response2 = $session->sendAndWait(prompt: '2 + 2'); // restituisce '4'
});

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

Assertion

Verifica che un prompt specifico sia stato invocato.
Copilot::assertPrompt('1 + *');
Verifica che un prompt non sia stato invocato.
Copilot::assertNotPrompt('1 + *');
Verifica quante volte è stato invocato un prompt.
Copilot::assertPromptCount(3);
Verifica che nessun prompt sia stato invocato.
Copilot::assertNothingSent();

Prevent stray requests

Blocca tutte le richieste JSON-RPC. Se ne viene effettuata una, viene sollevata l’eccezione Revolution\Copilot\Exceptions\StrayRequestException.
Copilot::preventStrayRequests();
Per consentire solo alcuni comandi.
Copilot::preventStrayRequests(allow: ['ping']);
Per disattivare il blocco.
Copilot::preventStrayRequests(false);
Poiché vengono bloccate solo le richieste JSON-RPC, Client::start() non è bloccato.

Utilizzi che potrebbero non funzionare correttamente

Se usi Copilot all’interno di un comando Artisan, il mock con fake() è efficace ma assertPrompt() e simili potrebbero non funzionare correttamente. Ci sono pochi esempi d’uso, è in fase di indagine.
use Revolution\Copilot\Facades\Copilot;

Copilot::fake('Hello');

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

Copilot::assertPrompt('Hi');

shouldReceive() / expects()

Naturalmente puoi usare anche shouldReceive() e expects(), ben noti da Mockery. Sono funzionalità supportate automaticamente quando usi un Facade, quindi non le descriviamo qui.
Per le informazioni più recenti fai riferimento al repository GitHub.
Ultima modifica il 13 luglio 2026