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; // ?intTestovanie 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 kryptomienOdoslaní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.