GraphQL.cz/Fórum/Jak se testuje GraphQL API oproti REST API?

Jak se testuje GraphQL API oproti REST API?

Zajímalo by mě, jak vlastně probíhá testování GraphQL API ve srovnání s REST API. Slyšel jsem, že GraphQL umožňuje získávat přesně ta data, která potřebujeme, což by mohlo mít vliv na to, jakým způsobem se testy provádějí. Když mám REST API, tak většinou testuju jednotlivé endpointy a odpovědi, které dostávám, ale u GraphQL je to přece jenom jinak. Můžu si přece poskládat dotazy tak, jak chci, což může znamenat, že testování bude složitější nebo naopak efektivnější. Jak tedy například testujete schéma v GraphQL? Je to něco jako validace typu v REST? A co se týká testování chybových stavů, je tam nějaký rozdíl? Jak se to liší v případě, že vezmu v úvahu autentizaci a autorizaci? Mám také pocit, že můžete mít více než jednu odpověď v jednom dotazu v GraphQL a to by mohlo komplikovat testování. Jak se tedy dělají unit testy v těchto dvou systémech? A co třeba nástroje, které používáte k testování API? Vím o Postmanu pro REST, ale co je nejlepší pro GraphQL? Jsem z toho trochu zmatený a rád bych se dozvěděl více o tom, jak na to správně jít.

184 slov
1.8 minut čtení
18. 1. 2025
Michaela Vobořilová

Testování GraphQL API se fakt dost liší od REST. U RESTka většinou jedeš po jednotlivých endpointách a kontroluješ, co ti vracejí. Tady to máš mnohem volnější, protože v GraphQL si můžeš s dotazy hrát a vybrat si přesně, co chceš, což je super, ale dělá to testy složitější. Když testuješ schéma v GraphQL, tak vlastně ověřuješ, jestli máš správné typy a jestli se ti dotazy chovají tak, jak mají. To je něco jako validace typu u REST, ale víc flexibilní.

Chybové stavy? Není to zas tak jiný, spíš se zaměřuješ na to, co se stane, když si třeba vyžádáš neexistující data nebo špatný vstup. Autentizace a autorizace fungují podobně jako u REST, prostě testuješ přístupy podle tokenů a práv.

Máš pravdu, že můžeš mít více odpovědí v jednom dotazu, takže testování může být trochu zmatené. Unit testy děláš normálně pro jednotlivé resolver funkce v GraphQL, což může být víc práce než u REST.

Co se nástrojů týče, Postman je fajn na REST, ale pro GraphQL doporučuju třeba Apollo Client nebo Postman taky podporuje GraphQL. Určitě vyzkoušej nějaké knihovny na testování jako je Jest nebo Mocha pro unit testy. V každém případě je dobrý mít i schema validator pro ověření struktury odpovědí.

198 slov
2 minut čtení
2. 11. 2024
Simona Brožová

Testování GraphQL API je fakt jiný oproti REST. U RESTka máš jasně daný endpointy, takže jedeš konkrétní GET, POST, PUT a DELETE požadavky a testuješ odpovědi. U GraphQL si můžeš sestavit dotaz přesně podle toho, co potřebuješ, takže jde o to, že testy musíš zaměřit na strukturu dotazu a typy dat. Zatímco v RESTu se díváš na jednotlivý response kódy, v GraphQL se soustředíš na to, jestli dostaneš správný data v odpovědi.

Když testuješ schéma v GraphQL, tak vlastně ověřuješ, že všechny typy a fieldy odpovídají očekáváním – něco jako validace typů v REST. U chybových stavů to funguje podobně, ale musíš testovat i různé varianty dotazů a jak reagují na neplatný vstup.

Co se týče auth a auth, tak tam je to taky jiný – musíš zajistit, že máš správný tokeny nebo přístupová práva pro různé dotazy. A ano, můžeš mít víc odpovědí z jednoho dotazu v GraphQL, což může být o něco složitější při testování různých hodnot.

Pro unit testy to chceš mít dobře strukturovaný. Můžeš použít nástroje jako Apollo Client pro testování GraphQL, což ti pomůže i s mockingem. Na RESTka je Postman super, ale pro GraphQL můžeš použít třeba Insomnia nebo Apollo Studio – jsou fajn na sestavování a testování dotazů. Takže shrnuto, dej si pozor na strukturu dotazů a typy dat u GraphQL a otestuj všechnu autentizaci a oprávnění.

222 slov
2.2 minut čtení
5. 7. 2024
Dana Pazderová

Testování GraphQL API je fakt jiný oproti REST. U REST se většinou zaměřuješ na jednotlivý endpointy a jejich odpovědi, což je celkem jasný. Ale u GraphQL si vlastně můžeš poskládat dotazy podle potřeby, takže testy musíš brát víc jako celek. Ověřuješ, jestli ti to vrací správný data podle toho, co jsi si vybral v dotazu. Takže místo testování každého endpointu, testuješ spíš různý varianty dotazů a jejich odpovědi.

Když jde o validaci schématu v GraphQL, tak to je trochu podobný jako validace typu v REST, ale tady se ti hodí hlavně introspekce schématu, abys věděl, co všechno můžeš dotazovat.

Pokud jde o chybový stavy, tak je dobrý testovat i nevalidní dotazy nebo dotazy bez potřebných oprávnění. Autentizace a autorizace funguje v obou případech dost podobně, ale u GraphQL můžeš mít víc dat v jednom dotazu, což to testování trochu komplikuje.

Unit testy se dělají tak, že si píšeš testy na jednotlivý resolvery a logiku. Můžeš využít třeba Jest nebo Mocha pro tyhle testy.

Pro GraphQL se hodně používá Apollo Client na testování API a taky Postman, ten teď už umí i GraphQL dotazy. Ale jinak třeba Insomnia je taky super pro GraphQL testy. Každopádně doporučuju si udělat přehled o tom, jak fungují dotazy a odpovědi, než začneš s testováním.

212 slov
2.1 minut čtení
14. 1. 2025
Vlastimil Švec
GraphQL.cz/Články/Testing GraphQL APIs
Srovnání přístupů k testování GraphQL versus REST APIČlánek se zabývá srovnáním různých metod testování GraphQL a REST API, včetně doporučených praktik a výhod obou přístupů.
1000 slov
10 minut čtení
16. 7. 2022
Tereza Horáková
Přečíst článek
Podobné otázky