GraphQL.cz/Fórum/Funguje Apollo Client se Storybookem? Jak to nastavit?

Funguje Apollo Client se Storybookem? Jak to nastavit?

Zajímalo by mě, jestli někdo z vás má zkušenosti s integrací Apollo Clientu do Storybooku. Nedávno jsem začal pracovat na projektu, kde používáme GraphQL a Apollo Client pro správu dat. Rád bych měl možnost testovat jednotlivé komponenty v Storybooku, ale nevím, jak správně nastavit Apollo Provider, aby všechno fungovalo, jak má. Zkoušel jsem se podívat na nějaké tutoriály a dokumentaci, ale většina z nich je buď příliš stručná, nebo se zaměřuje na jiné technologie. Takže bych byl vděčný, kdyby mi někdo mohl poradit, jaká je nejlepší praxe pro nastavení Apollo Clientu ve Storybooku. Jaké kroky jsou potřeba udělat? Musím mít nějaký mock server pro GraphQL nebo to lze udělat i bez něj? Je potřeba něco speciálního v konfiguraci Storybooku, aby se Apollo Client načítal správně? Také by mě zajímalo, jestli existují nějaké konkrétní příklady nebo vzory kódu, které byste mohli doporučit. Mám obavy, že pokud to nenastavím správně, tak budu mít problémy s testováním komponentů a jejich interakcí s daty. Takže pokud máte jakékoliv tipy nebo rady ohledně této problematiky, budu za ně moc vděčný. Jak se vám to podařilo vyřešit? Díky předem za jakoukoliv pomoc!

186 slov
1.9 minut čtení
13. 11. 2024
Kristýna Procházková

Jo, Apollo Client se dá do Storybooku dostat docela jednoduše. Hlavně potřebuješ ApolloProvider, jinak ti komponenty nebudou moct používat Apollo. Můžeš to udělat tak, že si vytvoříš decorator v Storybooku, což ti umožní obalit komponenty tím providerem.

Něco jako:

import { ApolloProvider } from '@apollo/client'; import { MockedProvider } from '@apollo/client/testing';

const client = new ApolloClient({ uri: 'tvuj-uri', cache: new InMemoryCache() });

const withApollo = (Story) => ( <MockedProvider mocks={[]} addTypename={false}> <ApolloProvider client={client}> <Story /> </ApolloProvider> </MockedProvider> );

Takže tohle přidáš do decorators ve svém .storybook/config.js nebo jak to máš nastavené.

Co se týče mock serveru, nemusíš mít nic extra. MockedProvider ti umožní předat mock data pro tvé dotazy a můžeš testovat interakce bez skutečného API. Můžeš si tam přidávat mocky pro konkrétní části komponentů.

Když to nastavíš takhle, mělo by ti to fungovat. Fakt doporučuji mrknout na oficiální docs k Apollo Clientu a Storybooku, tam najdeš spoustu příkladů a detailů. Takže držím palce, ať to klapne!

161 slov
1.6 minut čtení
12. 7. 2024
Robert Suchý

Jasně, Apollo Client se dá v Storybooku použít. Tady je, jak to udělat. První věc, co potřebuješ, je nastavit ApolloProvider kolem svých komponentů. Můžeš to udělat v souboru preview.js v Storybooku. Tam si vytvoř nějakého mock klienta, třeba s MockedProvider z Apollo. To ti umožní simulovat GraphQL dotazy bez potřeby reálného serveru, což je super pro testování.

Takhle by to mohlo vypadat:

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

 export const decorators = [
  (Story) =\> (
    \<MockedProvider\>
      \<Story /\>
    \</MockedProvider\>
  ),
];

Pak si vytvoř nějaké mock data a dotazy pro komponenty, co testuješ. Je dobrý mít připravené mocky pro různé stavy (loading, error atd.), aby sis otestoval všechny scénáře.

Co se týče serveru, mock server není nutný, ale můžeš ho použít pro složitější scénáře. Záleží na tom, co potřebuješ.

Hodně lidí taky dává do Storybooku přímo Apollo Client s URI k serveru, ale to je spíš na produkční testy. Takže jestli chceš mít Storybook čistě pro development a testování komponent, doporučuju zůstat u toho mocku.

Pokud hledáš příklady, koukni na GitHub nebo na nějaké blogy zaměřený na React a Apollo, tam najdeš spoustu užitečných věcí. Snad ti to pomůže!

196 slov
2 minut čtení
10. 10. 2024
Vladimíra Hlávková

Takže, pokud chceš používat Apollo Client ve Storybooku, tak je to vlastně docela jednoduchý. Základem je nastavit Apollo Provider, aby tvé komponenty měly přístup k datům. Můžeš to udělat tak, že vytvoříš custom decorator pro Storybook. Tady je nějaký návod, jak to udělat:

  1. Nainstaluj potřebné balíčky - ujisti se, že máš nainstalované @apollo/client a @apollo/react-hooks (pokud používáš hooks).

  2. Vytvoř Apollo Client - vytvoř soubor třeba apolloClient.js, kde nastavíš Apollo Client s URL tvého GraphQL endpointu.

  3. Custom Decorator - v preview.js nebo preview.ts souboru ve Storybooku přidej decorator, který obalí všechny tvoje story do Apollo Provideru. Můžeš tam třeba i mockovat data, pokud použiješ MockedProvider z Apollo.

  4. Mock server (nepovinné) - pokud nechceš mít živý server, můžeš klidně mockovat odpovědi pomocí MockedProvider. To ti umožní simulovat různá data pro komponenty.

  5. Testuj komponenty - teď bys měl být schopen testovat svoje komponenty v Storybooku a vidět, jak reagují na různé stavy dat.

Není potřeba mít úplně funkční GraphQL server, ale mock server se hodí pro testování různých scénářů. Takže klidně zkus nějaké příklady na GitHubu nebo v dokumentaci Apollo Clientu - většinou tam jsou i příklady na integraci se Storybookem. Držím palce!

189 slov
1.9 minut čtení
25. 9. 2024
Dana Krejčíková
GraphQL.cz/Články/Storybook a React-GraphQL intergrated
Integrace Storybooku s Apollo Client pro GraphQL aplikaceKrok za krokem průvodce, jak efektivně integrovat Storybook s Apollo Client a vylepšit vývoj GraphQL aplikací.
1000 slov
10 minut čtení
10. 12. 2023
Jana Procházková
Přečíst článek
Podobné otázky