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

# Testing - GitHub Copilot SDK für Laravel

> Beschreibt Testmethoden mit Copilot::fake(), Assertions und dem Verhindern von Stray Requests im Laravel Copilot SDK.

In Laravel können Sie folgende Testcodes schreiben.

## Copilot::fake()

`Copilot::fake()` ist ein Mock für Funktionen, die über die Copilot-Facade genutzt werden. Andere Funktionen werden nicht gemockt.

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

Copilot::fake('2'); // Mock, der immer '2' zurückgibt

$response = Copilot::run(prompt: '1 + 1'); // Hier wird die Copilot CLI tatsächlich nicht aufgerufen

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

Bei mehreren Aufrufen innerhalb von `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'); // gibt '2' zurück
    $response2 = $session->sendAndWait(prompt: '2 + 2'); // gibt '4' zurück
});

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

## Assertions

Prüfen, dass ein bestimmter Prompt aufgerufen wurde.

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

Prüfen, dass ein Prompt nicht aufgerufen wurde.

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

Prüfen, wie oft Prompts aufgerufen wurden.

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

Prüfen, dass kein einziger Prompt aufgerufen wurde.

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

## Prevent stray requests

Verhindert alle JSON-RPC-Requests. Bei einem Aufruf wird die Ausnahme `Revolution\Copilot\Exceptions\StrayRequestException` geworfen.

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

Um nur bestimmte Kommandos zu erlauben.

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

Verhindern deaktivieren.

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

Da nur JSON-RPC-Requests verhindert werden, wird `Client::start()` nicht blockiert.

## Möglicherweise nicht korrekt funktionierende Verwendung

Wenn Sie Copilot innerhalb eines Artisan-Commands nutzen, ist das Mocking mit `fake()` wirksam, doch nachgelagerte Aufrufe wie `assertPrompt()` funktionieren unter Umständen nicht korrekt. Da es hier wenige Anwendungsbeispiele gibt, ist dies noch in Untersuchung.

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

Copilot::fake('Hello');

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

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

## shouldReceive() / expects()

Die von Mockery gewohnten `shouldReceive()` und `expects()` können Sie selbstverständlich ebenfalls nutzen.
Da diese Funktionen bei Verwendung der Facade automatisch unterstützt werden, entfällt eine Erläuterung.

<Info>
  Aktuelle Informationen finden Sie im [GitHub-Repository](https://github.com/invokable/laravel-copilot-sdk).
</Info>


## Related topics

- [GitHub Copilot SDK für Laravel](/de/packages/laravel-copilot-sdk/index.md)
- [GitHub Actions - GitHub Copilot SDK für Laravel](/de/packages/laravel-copilot-sdk/github-actions.md)
- [Authentifizierung - GitHub Copilot SDK für Laravel](/de/packages/laravel-copilot-sdk/auth.md)
- [Laravel Cloud - GitHub Copilot SDK für Laravel](/de/packages/laravel-copilot-sdk/laravel-cloud.md)
- [Erste Schritte - GitHub Copilot SDK für Laravel](/de/packages/laravel-copilot-sdk/getting-started.md)
