---
title: "Testovanie — Metrics for Laravel | Roundly"
description: "Podstrčte výsledky metrík cez Metrics::fake(), overte, ktoré metriky sa vyhodnotili či zabudli, a testujte čísla nad naplnenými riadkami."
url: https://roundly-consulting.com/sk/open-source/navody/metrics-for-laravel/testovanie
language: sk
---

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

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

# Testovanie

Metrics::fake() nahradí manažéra — za fasádou aj v kontajneri, takže ho dostanú aj injektovaní manažéri — zaznamenávajúcim RoundlyConsulting\\Metrics\\Testing\\MetricsFake a vráti ho. Ponechá si každú zaregistrovanú metriku, na zadané kľúče odpovie pripravenými výsledkami a zaznamená, čo sa vyhodnotilo a invalidovalo — v duchu Http::fake() z Laravelu. Fake je súčasťou balíka a závisí len od Assert z PHPUnit:

```php
use RoundlyConsulting\Metrics\Facades\Metrics;

$fake = Metrics::fake([
    'active-users' => 1200,                  // a number becomes a value envelope
    'revenue'      => ['value' => 5000.0],   // an array is used as the raw result
]);

// ...exercise the code under test...

Metrics::assertResolved('active-users');
$fake->assertResolvedTimes('active-users', 1);
$fake->assertNotResolved('revenue');
$fake->assertNothingResolved();

// forget() and flushCache() are recorded, and the cache is left alone
$fake->assertForgotten('revenue');          // by key, or by class for an unregistered metric
$fake->assertNotForgotten('active-users');
$fake->assertNothingForgotten();
$fake->assertCacheFlushed();
$fake->assertCacheNotFlushed();
```

## Pripravené hodnoty

- int alebo float — zabalí sa do výsledku hodnoty.
- Pole — použije sa ako surový výsledok.
- RoundlyConsulting\\Metrics\\Types\\Result — použije sa bez zmeny.
- Celá inštancia Metric — použije sa jej kópia s vypnutým cachovaním.

Pripravené číslo, pole alebo Result pre kľúč, ktorý je zároveň zaregistrovaný, zastúpi danú metriku: ponechá si názov, popis, prefix, sufix aj formátovač zaregistrovanej metriky a jej verejné fluent volania (withChangeAgainstPreviousPeriod(), groupBy(), …) prijme bez účinku — pripravený výsledok zostane nezmenený. Metóda, ktorú zaregistrovaná metrika nemá, vyhodí BadMethodCallException, rovnako ako na skutočnej metrike.

Pripravené výsledky sa nikdy necachujú, takže hodnota z jedného testu nepretečie do ďalšieho. Fake si ponechá každú metriku zaregistrovanú pred ním — napríklad v service provideri — takže kľúče bez pripravenej hodnoty sa vyhodnotia zo skutočnej zaregistrovanej metriky; keys(), has() aj all() zahŕňajú aj pripravené kľúče:

```php
use RoundlyConsulting\Metrics\Facades\Metrics;

// AppServiceProvider::boot() registered: Metrics::register('users', RegisteredUsers::class);
$fake = Metrics::fake(['revenue' => 5000]);

Metrics::get('users');       // the real registered metric — kept by the fake, and recorded
Metrics::get('revenue');     // the canned result
$fake->assertResolved('users');
$fake->assertResolved('revenue');
```

## Asercie

Dostupné na vrátenom fake objekte aj cez fasádu Metrics:

| Asercia | Prejde, keď |
| --- | --- |
| `assertResolved(string $key, ?int $times = null)` | Kľúč sa vyhodnotil aspoň raz (alebo presne $times-krát). |
| `assertResolvedTimes(string $key, int $times)` | Kľúč sa vyhodnotil presne $times-krát. |
| `assertNotResolved(string $key)` | Kľúč sa nevyhodnotil ani raz. |
| `assertNothingResolved()` | Nevyhodnotila sa žiadna metrika. |
| `assertForgotten(string $key)` | forget() sa zavolalo pre kľúč — alebo pri nezaregistrovanej inštancii metriky pre jej triedu. |
| `assertNotForgotten(string $key)` | forget() sa preň nikdy nezavolalo. |
| `assertNothingForgotten()` | forget() sa nezavolalo vôbec. |
| `assertCacheFlushed()` | flushCache() sa zavolalo. |
| `assertCacheNotFlushed()` | flushCache() sa nikdy nezavolalo. |

forget() a flushCache() sa zaznamenajú a cache sa nikdy nedotknú; forget() však pri kľúči, ktorý nie je pripravený ani zaregistrovaný, stále vyhodí UnknownMetricException.

## Feature test

Fake sa dobre dopĺňa s controllerom zo sekcie Register metrík — zaznamená sa každé načítanie cez get(), vrátane tých, ktoré robí dashboard:

```php
use RoundlyConsulting\Metrics\Facades\Metrics;

it('serves a metric tile', function () {
    Metrics::fake(['active-users' => 1200]);

    // GET /metrics/{key} — the show() controller from the Registry section
    $this->getJson('/metrics/active-users')
        ->assertOk()
        ->assertJsonPath('result.value', 1200.0);

    Metrics::assertResolvedTimes('active-users', 1);
});
```

## Testovanie samotných čísel

Ak chcete testovať samotný výpočet, fake vynechajte: naplňte riadky cez factories a overujte výstup toArray() — metriky bežia nad testovacou databázou ako každý iný dotaz:

```php
use App\Metrics\RegisteredUsers;
use App\Models\User;
use RoundlyConsulting\Metrics\Enums\Period;

it('counts sign-ups today', function () {
    User::factory()->count(3)->create();

    $metric = RegisteredUsers::make()->range(Period::Today)->toArray();

    expect($metric['result']['value'])->toBe(3.0);
});
```

## 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/metrics-for-laravel.md)
