GraphQL.cz/Články/Nástroje pro GraphQL

Testování GraphQL API s Apollo Client: Návod pro každého vývojáře

Komplexní návod na testování GraphQL API pomocí Apollo Client v kombinaci se Jest a Testing Library, který osloví jak začátečníky, tak odborníky.

775 slov
7.8 minut čtení
4. 12. 2024
Jana Procházková

V dnešní době se stále více projektů spoléhá na GraphQL jakožto ideální způsob pro komunikaci mezi front-endem a back-endem. Tento moderní dotazovací jazyk se stal oblíbenou volbou pro vývojáře, protože nabízí flexibilitu a efektivitu. Pokud však chcete zajistit, aby vaše GraphQL API fungovalo tak, jak má, je zásadní provádět důkladné testování. A právě zde přichází na scénu Apollo Client – mocný nástroj, který vám pomůže testovat vaše GraphQL API. V tomto článku si ukážeme, jak testovat GraphQL API s Apollo Client pomocí Jest a Testing Library. Bez ohledu na to, jestli jste začátečník nebo zkušený vývojář, tento návod vám poskytne užitečné tipy a triky, které můžete okamžitě aplikovat.

Proč používat Apollo Client?

Apollo Client je jedním z nejpoužívanějších klientů pro práci s GraphQL. Umožňuje snadno spravovat místní a vzdálený stav aplikace a integruje se s různými knihovnami, což z něj činí ideální volbu pro testování. Díky Apollo Clientu můžete efektivně načítat data, spravovat cache a reagovat na změny ve stavu aplikace.

Jak nastavit prostředí pro testování?

Než začnete testovat vaše GraphQL API, musíte mít správně nastavené prostředí. Postupujte podle následujících kroků:

  1. Nainstalujte potřebné závislosti: Budete potřebovat @apollo/client, jest, @testing-library/react a další související knihovny. Váš příkaz může vypadat takto:
    npm install @apollo/client jest @testing-library/react @testing-library/jest-dom --save-dev
    
  2. Nastavte Apollo Provider: Abyste mohli používat Apollo Client ve vašich testech, musíte obalit vaši komponentu do ApolloProvider. To zajistí, že všechny dotazy budou správně nasměrovány.
    import \{ ApolloProvider \} from '@apollo/client';
    import client from './ApolloClient'; // Importujte váš instanci klienta
    
    render(
      \<ApolloProvider client=\{client\}\>
        \<YourComponent /\>
      \</ApolloProvider\>
    );
    
  3. Nastavení Jest: Ujistěte se, že máte správně nakonfigurovaný Jest. Vytvořte soubor jest.config.js a nastavte potřebné hodnoty pro váš projekt.

Jak psát testy pro GraphQL API?

Testování komponent využívajících GraphQL API může být zpočátku složité. Klíčem je simulace (mocking) dotazů a mutací. Zde je jednoduchý příklad:

 import \{ render, screen \} from '@testing-library/react';
 import \{ MockedProvider \} from '@apollo/client/testing';
 import YourComponent from './YourComponent';
 import \{ GET_DATA \} from './queries';

const mocks = [
  \{
    request: \{
      query: GET_DATA,
    \},
    result: \{
      data: \{
        items: [\{ id: 1, name: 'Item 1' \}],
      \},
    \},
  \},
];

test('renders items', async () =\> \{
  render(
    \<MockedProvider mocks=\{mocks\} addTypename=\{false\}\>
      \<YourComponent /\>
    \</MockedProvider\>
  );

  const item = await screen.findByText(/Item 1/i);
  expect(item).toBeInTheDocument();
\});

V tomto příkladu vytváříme simulaci pro dotaz GET_DATA, což nám umožňuje otestovat komponentu bez reálného připojení k serveru. Tímto způsobem můžeme izolovat testy a zaměřit se pouze na logiku komponenty.

Testování mutací s Apollo Client

Kromě dotazů budete pravděpodobně potřebovat také testovat mutace. Proces je podobný jako u dotazů:

 import \{ gql \} from '@apollo/client';
 import \{ MockedProvider \} from '@apollo/client/testing';
 import YourMutationComponent from './YourMutationComponent';

const CREATE_ITEM = gql`mutation CreateItem($name: String!) \{ createItem(name: $name) \{ id name \} \}`;

const mocks = [
  \{
    request: \{
      query: CREATE_ITEM,
      variables: \{ name: 'New Item' \},
    \},
    result: \{
      data: \{
        createItem: \{ id: 2, name: 'New Item' \},
      \},
    \},
  \},
];
screen.getByText('Create Item').click(); // Simulace uživatelské akce

v tomto případě testujeme komponentu využívající mutaci CREATE_ITEM. Přidáním simulovaného výsledku můžeme ověřit chování komponenty po úspěšném vytvoření položky.

Praktické tipy pro efektivní testy

  1. Dbejte na čistotu kódu: Udržujte vaše testy čisté a přehledné. Každý test by měl mít jasný účel.
  2. Používejte popisné názvy: Názvy funkcí mohou říkat hodně o tom, co test dělá – snažte se o jasnost.
  3. Separátní soubory pro mocky: Pokud máte složité mocky, mějte je v samostatném souboru pro lepší přehlednost.
  4. Testujte různé scénáře: Nezapomeňte zahrnout různé možné scénáře, jako jsou chyby nebo prázdná data.
  5. Automatizované testy: Integrujte vaše testy do CI/CD pipeline pro zajištění kontinuálního testování.

Závěrem

Testování GraphQL API pomocí Apollo Client v kombinaci se Jest a Testing Library může být efektivní způsob, jak zajistit kvalitu vaší aplikace. Bez ohledu na to, zda jste nový v oblasti JavaScriptu nebo zkušený vývojář, tento postup vám umožní lépe porozumět tomu, jak vaše komponenty interagují s API a jak reagují na různé situace. Takže neváhejte a vyzkoušejte si to! A pokud vás zajímají další tipy ohledně práce s GraphQL či Apollo Clientem, nezapomeňte sledovat naše další články na GraphQL.cz.

26868 přečtení článku
458 lajků
4. 12. 2024
Jana Procházková
  • GraphQL

  • Apollo Client

  • testování

  • Jest

  • Testing Library

  • API

  • vývojář

  • JavaScript

  • komponenta

O autorovi

Jana Procházková

Full-stack vývojářka se specializací na TypeScript a .NET. Má 5 let zkušeností s vývojem enterprise aplikací. Vystudovala VŠE v Praze a aktivně se podílí na vývoji českého GraphQL frameworku. Píše především o integraci GraphQL s různými backendovými technologiemi a správě datových schémat.

Dotazy k článku