March 11, 2007 by alex
Da wir uns diese Woche etwas um die Laufzeit unsere Tests gekümmert haben, war das Thema unseres letzten Forschungstages “besser testen in Ruby on Rails”. Da Testen bereits Thema bei Peepcode war, war der Screencast Pflicht. Der brachte leider kaum neues. Doch ganz zum Schluss wurden dann doch noch zwei praktische Tools vorgestellt. Mit TestTimer (gem install test_timer
) läst sich die Laufzeit aller einzelnen Test messen. So lassen sich echte Langläufer ausmachen. Ein weiteres sehr praktisches Tool ist FakeWeb. Damit lässt sich Http-Kommunikation simulieren - perfekt, um die Testumgebung von externen Seiten zu entkoppeln ohne den Produktionscode zu ändern. Hier mal ein Beispiel aus der Dokumentation.
def test_request FakeWeb.register_uri('http://example.com/test_me', :string => "Hello World!") content = Net::HTTP.get(URI.parse('http://example.com/test_me')) assert_equal "Hello World!", content end
Bei unserer Rechereche im Netz stießen wir zu guter Letzt noch auf einen kleiner Helfer, der automatisch jede Seite auf gültiges HTML prüft, jedem Link folgt, jeden Ajax Link aufruft und Formulare mit zufälligemn Daten füttert. So lassen sich Routing-Fehler, fehlende Seiten und falsche Formulare leichter aufspüren. Dieses Plugin hat den passenden Namen SpiderTest. Auch hier ist die Verwendung kinderleicht.
def test_spider get '/' assert_response :success spider(@response.body, '/') end
SpiderTest befindet sich noch in der Entwicklung.
So das waren unsere Ergebnisse mal kurz zusammengefasst. Über hilfreichreiche Tipps und Kritik freuen wir uns, genauso wie über jeden netten Kommentar :)