Ahoj, jak se řeší, když potřebuji testovat, zda se vložil správný počet záznamů do databáze? Dohledával jsem to, ale nemohu nic kloudného najít, resp. vše se to řeší obezličkami typu mockery (kde jestli jsem správně pochopil, tak to jen simuluji). Čekal bych normální řešení, kdy se vkládají data do databáze a z ní je poté kontroluji, když už se při testech dělají migrace.
To možeš ľahko zmeniť. Registrácia je zdarma a ako registrovaný člen získaš množstvo výhod. Prečítaj si prečo by si mal byť členom.
Prihlásiť sa ZaregistrovaťNejde na to pouzit assertEquals
?
// insert 25 users
$this->assertEquals(25, $users->count());
Co viem, tak priamo nad DB Laravel ponuka len existencne asserty, teda assertDatabaseHas
a assertDatabaseMissing
...
Aha, to mě nenapadlo. Zmátlo mě, že když se dívám do "database_test", tak tam se během testů provedou migrace, ale jinak tabulky jsou prázdné.
Zalezi od nastavenia, ci tam mas transakcie a rollbacky, alebo migrujes hore dole a tiez kedy sa do tych tabuliek pozeras. Kazdy test by mal zacinat cerstvou DB a byt nezavisly na inych testoch. Ak sa pozeras do DB pri transakcnom spracovani, tam commit nejde nikdy, takze v tabulkach data neuvidis.
Idealne je na testy pouzit SQLite :in_memory:, obcas ale mozes narazit na problem, ze SQLite nepodporuje uplne celu mnozinu (My)SQL dotazov. Ak je testovanie kriticke a testov bude vela - rychlost bude dolezita, je dobre to prisposobit uz v ramci aplikacie a zjednodusit si robotu. Inak potom druha pouzitelna moznost zo skusenosti je in-memory engine MySQL(MariaDB) a transakcie.
Vyřešeno, problém byl v konfiguraci, kdy se testy prováděly na localhostu na "produkční" databázi namísto na testovací (databaze_test).