Documentation Index
Fetch the complete documentation index at: https://kawax.biz/llms.txt
Use this file to discover all available pages before exploring further.
Laravel ならこういうテストコードが書けます。
Copilot::fake()
Copilot::fake() は Copilot Facade から使う機能のためのモックです。他の機能はモックしません。
use Revolution\Copilot\Facades\Copilot;
Copilot::fake('2'); // 常に'2'を返すモック
$response = Copilot::run(prompt: '1 + 1'); // ここで実際にはCopilot CLIは呼ばれない
// Pest
expect($response->content())->toBe('2');
// PHPUnit
$this->assertEquals('2', $response->content());
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'); // '2'を返す
$response2 = $session->sendAndWait(prompt: '2 + 2'); // '4'を返す
});
expect($response1->content())->toBe('2');
アサーション
特定のプロンプトが呼び出されたことを確認。
Copilot::assertPrompt('1 + *');
プロンプトが呼び出されなかったことを確認。
Copilot::assertNotPrompt('1 + *');
プロンプトが呼び出された回数を確認。
Copilot::assertPromptCount(3);
プロンプトが一度も呼び出されなかったことを確認。
Copilot::assertNothingSent();
Prevent stray requests
JSON-RPC リクエストをすべて防止します。呼び出した場合は例外 Revolution\Copilot\Exceptions\StrayRequestException が発生します。
Copilot::preventStrayRequests();
一部のコマンドだけは許可する場合。
Copilot::preventStrayRequests(allow: ['ping']);
防止の停止。
Copilot::preventStrayRequests(false);
防止するのは JSON-RPC リクエストだけなので Client::start() は防止しません。
正常に動かないかもしれない使い方
Artisan コマンド内で Copilot を使っている場合、fake() でのモックは有効ですが、その後の assertPrompt() などが正しく動かない場合があります。使用例が少ないので調査中です。
use Revolution\Copilot\Facades\Copilot;
Copilot::fake('Hello');
$this->artisan('copilot:hi');
Copilot::assertPrompt('Hi');
shouldReceive() / expects()
Mockery でお馴染みの shouldReceive() や expects() も当然使えます。
Facade を使えば自動的に対応している機能なので説明は省略します。