Ich habe eine Menge davon in letzter Zeit für Kundenprojekte gemacht. Die größten Blöcke für mich scheinen die grassierende Verwendung von Inline-Javascript mit oder ohne RJS zu sein. [Randnotiz: Es gibt eine richtige und eine falsche Art, AJAX zu machen, und die meisten Leute tun es falsch.] Ich benutze Gurken normalerweise stark mit ein bisschen Rspec für seltsame Unit-Tests.
Die zu berücksichtigenden Variablen sind vielfältig, aber ein guter Ausgangspunkt sind einige Komponententests für Ihre Modelle. Erstellen Sie einige Factories und testen Sie Ihre Validierungen, zusammen mit allen benutzerdefinierten Verhaltensweisen, die Sie testen möchten.
Wenn Sie nicht daran interessiert sind oder bereits eine Reihe von Komponententests haben und Integration hinzufügen möchten, ist die nächste Frage, inwieweit Sie viel Inline-Javascript oder RJS machen. Wenn Ihre App sehr "ajaxy" ist, müssen Sie mit dem Selen-Treiber für Gurke beginnen, die langsam wie Melasse im Februar ist, aber es wird die Arbeit erledigt. Sobald Sie eine Suite von Tests haben, die die volle Funktionalität (oder sogar nur die wichtigen Sachen) für Ihre Anwendung abdecken, würde ich anfangen, das Javascript zu refactrusieren, um unauffällig zu funktionieren.
andere Richtung man gehen könnte, wäre zusätzliche rspecs für Ihre Controller und Ansichten zu bauen, aber ich weiß nicht wirklich, wie dieses Muster, wie Sie in der Prüfung die Implementierung anstelle der Funktionalität bekommen.
Die wichtige Sache zu erinnern ist, dass es nicht alles über Nacht geschehen muss. Analysieren Sie Ihre Arbeitsabläufe (z. B. Anmelden, Ausführen von Aufgabe A, Ausführen von Aufgabe B usw.) und bestimmen Sie, welche Bereiche 80% Ihrer typischen Anwendungsfälle abdecken. Testen Sie diese zuerst. Dann benutze etwas wie metric_fu oder einfach nur rcov (oder jedes andere Coverage-Tool) und finde Bereiche deines Codes, die logisch dicht und ungetestet sind. Ich mag Metric_fu dafür, weil die Suite von Tools, die es ausführt, Ihnen beide dieser Informationen geben kann.
+1, weil ich mir die gleiche Frage gestellt habe –