NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
QR for Laravel

Testovanie

Zámerne bez fake

Qr nemá fake(). Kódovanie je čisté a deterministické — rovnaký vstup dá vždy rovnaký symbol — a nič sa nezapisuje, nezaraďuje do fronty, neposiela e-mailom ani inak (voliteľná SVG cache si pamätá len verejný výstup). Testy preto overujú skutočný výstup: dekódujte maticu a rozhodnutia o kódovaní čítajte cez Qr::info() a Qr::fits():

use RoundlyConsulting\Qr\Facades\Qr;
use RoundlyConsulting\Qr\Testing\MatrixDecoder;

expect(MatrixDecoder::decode(Qr::otpauth($uri)->matrix())->bytes)->toBe($uri)
    ->and(Qr::info($uri)->version)->toBeLessThanOrEqual(10)
    ->and(Qr::fits($uri, maxVersion: 10))->toBeTrue();

MatrixDecoder

RoundlyConsulting\Qr\Testing\MatrixDecoder prečíta vygenerovanú maticu späť, takže môžete presne overiť, čo kód obsahuje:

use RoundlyConsulting\Qr\Facades\Qr;
use RoundlyConsulting\Qr\Testing\MatrixDecoder;

it('encodes the provisioning URI unchanged', function () {
    $uri = 'otpauth://totp/Acme:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Acme';

    expect(MatrixDecoder::decode(Qr::otpauth($uri)->matrix())->bytes)->toBe($uri);
});

Ide o dekodér dokonalých matíc pre testy, nie o skener obrázkov. Overí formátové a verziové informácie, odstráni masku, de-interleavuje, vyžaduje nulový Reed-Solomon syndróm pre každý blok a parsuje všetky segmenty; chyby vyhodia MatrixDecodeException. Výsledok:

$decoded = MatrixDecoder::decode($matrix);   // QrMatrix or a list of rows

$decoded->bytes;            // the encoded data
$decoded->version;
$decoded->errorCorrection;
$decoded->mask;
$decoded->segments;         // list<SegmentInfo>
$decoded->eciDesignator;    // ?int

Testovanie odpovedí

Routy, ktoré vracajú kód, sú bežné HTTP odpovede, takže platia obvyklé asercie Laravelu:

it('serves the table QR code as SVG', function () {
    $response = $this->get('/tables/12/qr');

    $response->assertOk()
        ->assertHeader('Content-Type', 'image/svg+xml; charset=utf-8')
        ->assertHeader('X-Content-Type-Options', 'nosniff');

    expect($response->headers->get('Cache-Control'))->toContain('public');
});

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

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

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.