Testovanie
Na testovanie využívame unit a integračné testy vytvorené pomocou Jest
a Cypress
testovacích rámcov.
Jest
Nový test vytvoríme tak, že vytvoríme *.test.ts
súbor s rovnakým menom ako .ts súbor, ktorý ideme testovať. Test sa rozpoznáva na základe .test.ts
prípony. Testy vytvárame vždy v src/tests
priečinku.
Príkaz na manuálne spustenie testov je yarn test
, prípadne je potrebné spustiť pred týmto príkazom ešte príkaz yarn
ak testovanie ešte nebolo spustené.
Pred testovaním
Pred testovaním je potrebné spustiť databázu v docker kontajneri pomocou príkazu yarn docker:up
v adresári backend repozitára. Na fungovanie tohto príkazu treba spustiť aj aplikáciu Docker desktop. Po skončení testovania je možné kontajner vypnúť pomocou príkazu yarn docker:down
.
Backend unit testy [dočasne pozastavené]
Testy pre backend sa automaticky spúšťajú pri príkaze git push
. Pri testovaní využívame okrem rámca Jest
aj rámec Supertest
, ktorý slúži na odosielanie HTTP requestov na API našich Express.js
endpointov.
Testy vytvorené záznamy v databáze po skončení vymažú.
Zoznam unit testov pre endpointy:
GET /api/data
GET /api/recipe
GET /api/recipe/recipeId
POST /api/recipe/recipeId/load
PUT /api/recipe
PASS src/tests/RestServer.test.ts
Get data devices info data
√ GET /api/data (33 ms)
Get all recipes
√ GET /api/recipe (81 ms)
Get recipe by id
√ GET /api/recipe/recipeId (55 ms)
Load recipe Smoky Grove Lichtenhainer
√ POST /api/recipe/recipeId/load (33 ms)
Add new recipe
√ PUT /api/recipe (150 ms)
Load, start loaded recipe and abort test
○ skipped PUT /api/brew/0/start
Test Suites: 1 passed, 1 total
Tests: 1 skipped, 5 passed, 6 total
Snapshots: 0 total
Time: 3.858 s, estimated 4 s
Ran all test suites.
Done in 7.09s.
Backend integračné testy [dočasne pozastavené]
Integračné testy sa spúšťajú manuálne odstránením skip()
funkcie z describe
bloku testu. Bežne sa tieto testy preskakujú, pretože zatiaľ nevieme spoľahlivo ukončiť všetky procesy, ktoré sa počas testu spúšťajú, a testovanie nie je automaticky ukončené.
Zoznam integračných testov pre endpointy:
PUT /api/brew/0/start
- načíta recept a spustí nové varenie
Cypress - frontend integračné testy
Na testovanie funkčnosti aplikácie ako celku používame rámec cypress
, ktorým testujeme reakcie frontendu a tým zároveň aj funkčnosť backendu a jeho súčastí.
spustenie testovacieho prostredia vo frontend repozitári
yarn cypress:open
Po zadaní nasledujúceho príkazu sa spustí testovacie rozhranie, ktoré umožnuje spustenie naprogramovaných scénárov pre testy. Všetky testy je možné pustiť aj bez grafického rozhrania "headless".
Testovacie scenáre
- Načitanie a spustenie receptu
- Spustenie receptu, pauza, spustenie a následné zrušernie varenia
Príklad spustenia jedného testovacieho scenára