Passer au contenu principal
Voici le style de tests que vous pouvez écrire avec Laravel.

Copilot::fake()

Copilot::fake() fournit des mocks pour les fonctionnalités utilisées via la Facade Copilot. Il ne mocke pas les autres fonctionnalités.
use Revolution\Copilot\Facades\Copilot;

Copilot::fake('2'); // Mock qui renvoie toujours '2'

$response = Copilot::run(prompt: '1 + 1'); // Ici Copilot CLI n'est pas réellement appelé

// Pest
expect($response->content())->toBe('2');
// PHPUnit
$this->assertEquals('2', $response->content());
Lorsque Copilot::start effectue plusieurs appels :
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'); // Renvoie '2'
    $response2 = $session->sendAndWait(prompt: '2 + 2'); // Renvoie '4'
});

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

Assertions

Vérifier qu’un prompt spécifique a été appelé.
Copilot::assertPrompt('1 + *');
Vérifier qu’un prompt n’a pas été appelé.
Copilot::assertNotPrompt('1 + *');
Vérifier le nombre d’appels de prompts.
Copilot::assertPromptCount(3);
Vérifier qu’aucun prompt n’a été envoyé.
Copilot::assertNothingSent();

Empêcher les requêtes parasites

Bloque toutes les requêtes JSON-RPC. Si une est appelée, l’exception Revolution\Copilot\Exceptions\StrayRequestException est levée.
Copilot::preventStrayRequests();
Pour n’autoriser que certaines commandes :
Copilot::preventStrayRequests(allow: ['ping']);
Désactiver la protection :
Copilot::preventStrayRequests(false);
Seules les requêtes JSON-RPC sont bloquées, donc Client::start() ne l’est pas.

Usages qui peuvent ne pas fonctionner correctement

Lorsque vous utilisez Copilot dans une commande Artisan, le mock via fake() fonctionne, mais les assertPrompt() qui suivent peuvent ne pas fonctionner correctement. Le cas est peu documenté et fait encore l’objet d’investigations.
use Revolution\Copilot\Facades\Copilot;

Copilot::fake('Hello');

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

Copilot::assertPrompt('Hi');

shouldReceive() / expects()

Bien sûr, les shouldReceive() et expects() de Mockery sont également utilisables. C’est une capacité inhérente aux Facades, aussi nous ne l’expliquons pas ici.
Pour les dernières informations, consultez le dépôt GitHub.
Dernière modification le 13 juillet 2026