---
title: "Testovanie — Onboarding for Laravel | Roundly"
description: "Onboarding::fake() zachytí udalosti, zaznamená skrytia krokov a naplní store v pamäti — alebo testujte postup priamo z údajov modelu."
url: https://roundly-consulting.com/sk/open-source/navody/onboarding-for-laravel/testovanie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Onboarding for Laravel](https://roundly-consulting.com/sk/open-source/navody/onboarding-for-laravel.md)

# Testovanie

Onboarding::fake() nahradí manager objektom OnboardingFake — vo fasáde aj v kontajneri, takže ho použijú aj vložené managery a trait GetsOnboarded — a vráti ho. Fake:

- ponechá všetky toky aj resolver zaregistrované pred ním, takže toky sa vyhodnocujú normálne;
- zachytí udalosti balíka StepCompleted a FlowCompleted, podobne ako Bus::fake() — ak už udalosti nie sú fakované: existujúci Event::fake() ponechá aj so zaznamenanými udalosťami, takže ho môžete zavolať pred Onboarding::fake() aj po ňom. Skorší čiastočný Event::fake(\[...\]) musí obsahovať obe udalosti, inak sa odošlú naozaj a fake ich neuvidí;
- zaznamená každé skrytie kroku — Onboarding::for($user)->dismiss(), dismiss() na toku aj $user->dismissOnboardingStep();
- nahradí store úložiskom v pamäti, ktoré môžete naplniť; useStore() sa pod fakom ignoruje.

```php
use RoundlyConsulting\Onboarding\Facades\Onboarding;

$fake = Onboarding::fake();

$fake->seedCompleted($user, 'verify-email');   // completedAt() reports it; record() skips it
$fake->seedDismissed($user, 'add-bio');        // the step drops out of $user's flow

$user->onboarding()->record('photo');
$user->dismissOnboardingStep('tour');

$fake->assertStepCompleted('photo')
     ->assertFlowCompleted()           // optionally pass a flow title to filter
     ->assertStepNotCompleted('bio')
     ->assertDismissed('tour', $user)  // subject optional
     ->assertNotDismissed('add-bio');  // seeding is not a dismissal

Onboarding::fake()->assertNothingRecorded()->assertNothingDismissed();
```

## Asercie

| Metóda | Účel |
| --- | --- |
| `assertStepCompleted(string $key, ?callable $callback = null)` | Pre kľúč bola odoslaná StepCompleted; voliteľný callback dostane udalosť a vráti bool. |
| `assertStepNotCompleted(string $key)` | Pre kľúč nebola odoslaná žiadna StepCompleted. |
| `assertFlowCompleted(?string $flowKey = null)` | Bola odoslaná FlowCompleted; voliteľný argument filtruje podľa názvu toku. |
| `assertNothingRecorded()` | Nebola odoslaná ani jedna z udalostí. |
| `assertDismissed(string $step, $subject = null)` | Krok bol skrytý — pre daný subjekt alebo pre akýkoľvek. Uložený model sa porovnáva podľa kľúča, iný Authenticatable podľa triedy a auth identifikátora, ostatné podľa objektu. |
| `assertNotDismissed(string $step, $subject = null)` | Krok nebol skrytý. Naplnenie cez seedDismissed() sa nepočíta. |
| `assertNothingDismissed()` | Nezaznamenalo sa žiadne skrytie. |

Každá asercia vracia fake, takže ich môžete reťaziť, a každú zavoláte aj staticky — Onboarding::assertDismissed(…). assertFlowCompleted() filtruje podľa názvu toku, nie podľa kľúča v registri — udalosť nesie samotný Flow.

## Naplnenie store

| Metóda | Účel |
| --- | --- |
| `seedCompleted($subject, string ...$steps)` | completedAt() vráti pre kroky aktuálny čas dokončenia, takže ich record() neohlási. |
| `seedDismissed($subject, string ...$steps)` | Kroky sa považujú za skryté — zmiznú, ak sú voliteľné a skryteľné. |

## Príklad v Pest

```php
use App\Models\User;
use RoundlyConsulting\Onboarding\Facades\Onboarding;

it('announces the photo step for the uploading user', function () {
    $fake = Onboarding::fake();

    $user = User::factory()->create(['avatar_path' => 'avatars/jane-doe.jpg']);

    $user->onboarding()?->record('photo');

    $fake->assertStepCompleted('photo', fn ($event) => $event->for === $user)
         ->assertStepNotCompleted('bio');
});

it('hides the bio step once the user says not now', function () {
    Onboarding::fake();

    $user = User::factory()->create();

    Onboarding::for($user)?->dismiss('add-bio');     // 'add-bio' is optional()->dismissible()

    Onboarding::assertDismissed('add-bio', $user);   // static calls work too
    expect(Onboarding::for($user)?->hasStep('add-bio'))->toBeFalse();
});
```

## Priame testovanie postupu

Postup sa odvodzuje z údajov, takže väčšina testov fake vôbec nepotrebuje — pripravte model a prečítajte tok:

```php
it('sends a fresh account to the photo step', function () {
    $user = User::factory()->create(['avatar_path' => null]);

    expect($user->hasCompletedOnboarding())->toBeFalse()
        ->and($user->onboardingProgress())->toBe(0.0)
        ->and($user->nextOnboardingStep()?->stepKey())->toBe('photo');
});
```

Manager je singleton v kontajneri, takže nová aplikácia v každom teste začína s tokmi, ktoré zaregistrujú vaše service providery. Ak test registruje vlastné toky, začnite načisto cez Onboarding::flush() alebo forget().

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/onboarding-for-laravel.md)
