1 komentář k článku Základy testování v PHPUnitu (fixtures, anotace, generování testů):

  1. Karel Minařík

    Testování v Rails -- opravy a doplnění

    Chtěl bych doplnit, jak jinak, odstavec o testování v Ruby On Rails, protože je zavádějící natolik, až hraničí s uváděním v omyl.

    > Zde naleznete způsob, jak testovat modely v Ruby on Rails
    Odkazovaný guide se zabývá testování celého „stacku“, tedy i integračními testy, „falešným“ voláním controllerů aplikace, apod. Navíc paradoxně není nejlepším úvodem do testování v Rails. Ten naleznete v knize „Agile Web Development With Rails“ nebo „The RSpec Book“.

    > (tedy velmi zkráceně, koho testování v Ruby zajímá víc, toho bych rád odkázal na knihovny RSPec a Cucumber).
    Nikoliv zkráceně. Zmiňovaný guide je naopak velmi přehledovým materiálem o testování v Rails. Připomenu, že v Rails je podpora pro testy „zapečená“ do té míry, že generátor nového modelu či „resource“ vygeneruje i základ pro testy.
    RSpec s Rails nesouvisí, jedná se o obecnou knihovnu pro deklarativní psaní testů v Ruby. Jedná se o alternativu k Test::Unit jakožto „old school“ variantě xUnit původně z Javy.
    Cucumber je zase obecný framework pro testování zejména webových aplikací, který umožňuje psát testy přirozeným jazykem, jako specifikaci. Klade stejně jako RSpec důraz na hodnotu pro zákazníka, nikoliv na technické zajištění funkce modulu (jako tradiční jednotkové testování).

    > Dříve zmiňované knihovny se zabývají takzvaným Behaviour Driven Developmentem, který je velmi vhodný i pro testování jiných částí aplikace (například controllerů).
    To je ale přece nesmírně zavádějící. V Ruby On Rails je standardně k RESTful resource (model+contro­ller+views+rou­tes) vygenerován test pokrývající CRUD funkcionalitu včetně fixtures. Nic dalšího k tomu nepotřebujete.
    Behavior Driven Development (BDD) je zase „vhodný“ pro testování čehokoliv v aplikaci, neboť oproti jednotkovému testování jeho smysl nespočívá v technice implementace nebo „hezčím slovním popisu“ ale v důrazu na business value a vyšší míru abstrakce: testuji chování, nikoliv surovou funkcionalitu stylem „input/output“. To samé lze (a je třeba!) samozřejmě ale dělat i v unit testech.
    Testování controllerů pokrývá v Rails ActionController::TestCase , nebo např. Rack::Test .
    Cucumber zase nesouvisí s Rails a do jisté míry ani s Ruby: je to poměrně agnostický nástroj, který umožňuje psát „spustitelnou specifikaci“ typu When I fill 'something' for 'search' And I click 'Search' Then I should see 'Something found' zejména pro webové aplikace. Jako driver může samozřejmě sloužit „zfalšovaný“ Rails/Rack stack, ale taky Mechanize, Selenium, Watir (automatizace browserů), nebo headless browser typu HtmlUnit apod. Samozřejmě, že v Rails světě je Cucumber nejpoužívanější, ale není na Rails ani na Ruby nijak vázaný. Implementaci testů můžete psát klidně v Pythonu.
    Zájemcům maximálně doporučuji video „BDD With Cucumber“, vysvětlující motivaci i konkrétní použití.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3260