Pokud v Ruby generujete XML, tak je dost možné, že pracujete s Nokogiri. S tím není problém generovat i složitější dokumenty. Jak ale otestujete, že se XML vygenerovalo správně? Jedna z možností je porovnat XML oproti nějaké fixture. To je jednoduché a rychlé. Se složitějšími dokumenty to už tak použitelné ale není. Přitom pokud máte k dispozici XSD schéma, tak s Nokogiri jde struktura hlídat velice jednoduše.
Jako spousta ostatních, i my řešímě EET. Tržby se evidují odesláním XML zprávy na SOAP API. Ministerstvo nám strukturu zprávy specifikovalo pomocí XSD souboru. Pojďme se podívát, jak ho můžeme použít v testech k ověření, že naše zpráva bude mít vždy správnou strukturu.
Pro generování zpráv máme následující třídu:
Vygenerované XML můsí odpovídat struktuře Z XSD schéma. S Nokogiri to můžeme do testu úplně jednoduše vložit takto:
Protože knihovna nejspíš není ještě úplně odladěná, tak výsledkem testu je pak fail s vypsáním konkrétních chyb:
Takže teď přesně víme, co a kde musíme upravit, aby byla zpráva v pořádku. Mnohem lepší, než porovnávání oproti fixture. :)
No a nakonec si můžeme pro RSpec ještě nadefinovat speciální matcher, který zpřehlední testy a validační chyby vypíše hezky červeně jako jiné faily:
a výstup: