Welcome to Arkanis Development

Ruby on Rails Tests

Published

This post is written in German

Wie im letzten Eintrag schon gesagt, schreibe ich momentan ein paar Tests für die nächste Version dieser Webseite. In Ruby on Rails ist es glücklicherweise sehr einfach, Tests zu schreiben. Das sind im Prinzip nur kleine, überschaubare Skripte, die gewisse Vorgänge der Anwendung ausführen und anschließend überprüfen, ob das Ergebnis mit den erwarteten Werten übereinstimmt. So kann man z.B. im Test einen Weblogeintrag erstellen und anschließend prüfen, ob der Datensatz in der Datenbank existiert, mit den passenden Kategorien verknüpft ist, usw. Das wirklich praktischste aber ist, dass man, sobald man die Tests einmal geschrieben hat, sie bequem alle jederzeit über ein Kommando ausführen kann.

Bisher hab ich immer nur mit Unit Tests gearbeitet, die datenbankspezifische Logik, wie z.B. die Beziehungen zwischen einzelnen Tabellen bzw. Models, überprüfen. Gestern Abend bin ich auch endlich mal dazugekommen Functional Tests zu schreiben. Damit kann man Anfragen and die Aktionen eines Controllers simulieren und prüfen, ob das Ergebnis mit den Erwartungen übereinstimmt.

Es ist wirklich gut, wenn man mit einem Befehl alle Tests durchlaufen lassen kann und weiß, dass die Anwendung so funktioniert, wie sie funktionieren soll. Beruhigt das Gewissen wirklich sehr.

Vielleicht mache ich auch gleich das meiste über Integration Tests, die im Prinzip die gesamte Rails-Anwendung durchtesten. Angefangen vom Dispatcher (der die URLs entgegennimmt), bis zu den verwendeten Controllern und Models.

Hab noch einige Tests zu schreiben… auf bald.

Leave a new comment

Having thoughts on your mind about this stuff here? Want to tell me and the rest of the world your opinion? Write and post it right here. Be sure to check out the format help (focus the large text field) and give the preview button a try.

Format help

Please us the following stuff to spice up your comment.

An empty line starts a new paragraph. ---- print "---- lines start/end code" ---- * List items start with a * or -

or