Saltar al contenido principal
En Laravel puedes escribir código de test como el siguiente.

Copilot::fake()

Copilot::fake() es un mock para las funciones que se usan a través del Facade Copilot. No mockea otras funcionalidades.
use Revolution\Copilot\Facades\Copilot;

Copilot::fake('2'); // mock que siempre devuelve '2'

$response = Copilot::run(prompt: '1 + 1'); // aquí Copilot CLI no se llama realmente

// Pest
expect($response->content())->toBe('2');
// PHPUnit
$this->assertEquals('2', $response->content());
Con varias llamadas dentro de 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'); // devuelve '2'
    $response2 = $session->sendAndWait(prompt: '2 + 2'); // devuelve '4'
});

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

Aserciones

Comprueba que se ha invocado un prompt concreto:
Copilot::assertPrompt('1 + *');
Comprueba que un prompt no se ha invocado:
Copilot::assertNotPrompt('1 + *');
Comprueba el número de veces que se ha invocado un prompt:
Copilot::assertPromptCount(3);
Comprueba que no se ha invocado ningún prompt:
Copilot::assertNothingSent();

Prevent stray requests

Bloquea todas las peticiones JSON-RPC. Si se realiza alguna, se lanza la excepción Revolution\Copilot\Exceptions\StrayRequestException.
Copilot::preventStrayRequests();
Si quieres permitir solo algunos comandos:
Copilot::preventStrayRequests(allow: ['ping']);
Detener la prevención:
Copilot::preventStrayRequests(false);
Solo se bloquean las peticiones JSON-RPC, así que Client::start() no se bloquea.

Usos que quizá no funcionen bien

Si usas Copilot dentro de un comando Artisan, el mock con fake() sí funciona, pero assertPrompt() y similares pueden no comportarse correctamente. Hay pocos casos de uso, así que está en investigación.
use Revolution\Copilot\Facades\Copilot;

Copilot::fake('Hello');

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

Copilot::assertPrompt('Hi');

shouldReceive() / expects()

Por supuesto, también puedes usar los conocidos shouldReceive() y expects() de Mockery. Como es una característica que se admite automáticamente al usar el Facade, se omite la explicación.
Consulta la información más reciente en el repositorio de GitHub.
Última modificación el 13 de julio de 2026