Generujeme testovací data v JavaScriptu – model a schéma

V předchozím článku Generujeme testovací data v JavaScriptu – zkracujeme Then jsme vytvořili továrničku s náhodnými vstupními daty a tím docílili zkrácení části Then v testu. Nyní se podíváme na alternativní definici modelu user pomocí schéma.

Psaní validací pro vstupní data v programu je obvykle časově náročné a obsahuje chyby – zapomenuté případy. V předchozím článku jsme měli pouze definici v Typescriptu a žádnou validaci. Prozkoumejme možnost definovat entitu user pomocí schéma z knihovny yup:

Definice je čitelná a přesná. Knihovna yup umožňuje široké možnosti definice několika úrovňových entit se speciálními pravidly.

Abychom nadále mohli mít náhodné vstupní data v testech a nemuseli opakovat yup definice do továrničky createUser, můžeme na to použít knihovnu yup-schema-faker. Tato knihovna nám umožní vygenerovat vstupní data dle námi definovaného schéma entity včetně akceptování našeho počátečního čísla(seed) jak jsem psal dříve.

Nově můžeme i zapojit validaci vstupních dat do metody updateUser. Podívejme se na výsledný kód:

Použitím definice modelu podle schéma napsaného v yup jsme opět zjednodušili a posílili náš model bez změny v testech. Pro přidání nového atributu do entity user se stále držíme pouze editace na jediném místě.

Celý příklad naleznete také ve veřejném github repozitáři zde.