> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Testen - GitHub Copilot SDK voor Laravel

> Leer hoe je test met Copilot::fake(), assertions en het voorkomen van stray requests in de Laravel Copilot SDK.

Met Laravel kun je dit soort testcode schrijven.

## Copilot::fake()

`Copilot::fake()` is een mock voor de functionaliteit die je via de Copilot-facade gebruikt. Andere functionaliteit wordt niet gemockt.

```php theme={null}
use Revolution\Copilot\Facades\Copilot;

Copilot::fake('2'); // Mock die altijd '2' retourneert

$response = Copilot::run(prompt: '1 + 1'); // Hier wordt de Copilot CLI niet echt aangeroepen

// Pest
expect($response->content())->toBe('2');
// PHPUnit
$this->assertEquals('2', $response->content());
```

Bij meerdere aanroepen via `Copilot::start`.

```php theme={null}
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'); // Retourneert '2'
    $response2 = $session->sendAndWait(prompt: '2 + 2'); // Retourneert '4'
});

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

## Assertions

Controleer of een bepaalde prompt is aangeroepen.

```php theme={null}
Copilot::assertPrompt('1 + *');
```

Controleer of een prompt niet is aangeroepen.

```php theme={null}
Copilot::assertNotPrompt('1 + *');
```

Controleer hoe vaak een prompt is aangeroepen.

```php theme={null}
Copilot::assertPromptCount(3);
```

Controleer of er geen enkele prompt is aangeroepen.

```php theme={null}
Copilot::assertNothingSent();
```

## Prevent stray requests

Blokkeert alle JSON-RPC-requests. Bij een aanroep wordt de exception `Revolution\Copilot\Exceptions\StrayRequestException` gegooid.

```php theme={null}
Copilot::preventStrayRequests();
```

Als je alleen bepaalde commando's wilt toestaan.

```php theme={null}
Copilot::preventStrayRequests(allow: ['ping']);
```

De blokkering uitschakelen.

```php theme={null}
Copilot::preventStrayRequests(false);
```

Alleen JSON-RPC-requests worden geblokkeerd, dus `Client::start()` wordt niet tegengehouden.

## Gebruik dat mogelijk niet goed werkt

Als je Copilot binnen een Artisan-command gebruikt, werkt de mock via `fake()` wel, maar werken assertions zoals `assertPrompt()` daarna soms niet correct. Omdat er weinig praktijkvoorbeelden zijn, wordt dit nog onderzocht.

```php theme={null}
use Revolution\Copilot\Facades\Copilot;

Copilot::fake('Hello');

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

Copilot::assertPrompt('Hi');
```

## shouldReceive() / expects()

De van Mockery bekende methodes `shouldReceive()` en `expects()` kun je uiteraard ook gebruiken.
Omdat dit automatisch wordt ondersteund zodra je de facade gebruikt, laten we de uitleg achterwege.

<Info>
  Raadpleeg de [GitHub-repository](https://github.com/invokable/laravel-copilot-sdk) voor de meest actuele informatie.
</Info>


## Related topics

- [GitHub Copilot SDK voor Laravel](/nl/packages/laravel-copilot-sdk/index.md)
- [GitHub Actions - GitHub Copilot SDK voor Laravel](/nl/packages/laravel-copilot-sdk/github-actions.md)
- [Laravel Cloud - GitHub Copilot SDK voor Laravel](/nl/packages/laravel-copilot-sdk/laravel-cloud.md)
- [Aan de slag - GitHub Copilot SDK voor Laravel](/nl/packages/laravel-copilot-sdk/getting-started.md)
- [Authenticatie - GitHub Copilot SDK for Laravel](/nl/packages/laravel-copilot-sdk/auth.md)
