2011-01-04 4 views
1

Ich bin gespannt, ob ich irgendwie das Testen eines Counter-Cache verspotten kann. Jetzt erstelle ich alle Datensätze, um den counter_cache zu testen. Gibt es irgendwelche guten Praktiken, Counter-Cache effektiv zu testen?Wie counter_cache mit test :: unit und mocha zu testen

Bearbeiten: Ich bin nur daran interessiert, zu testen, dass der Zähler-Cache auf einer bestimmten Zuordnung existiert.

+1

Warum möchten Sie counter_cache testen? Sie würden ein Framework-Feature testen. Dafür wird es Tests in der Rails-Test-Suite geben. Ihre Tests sollten nur Ihre Anwendung abdecken, nicht das Framework, auf dem sie aufbauen. – Matthias

+0

Bitte sehen Sie mein Update – dombesz

Antwort

1

Wenn Sie die Option :counter_cache hinzufügen, definiert ActiveRecord 2 Rückrufe (source code). Sie können Mocha verwenden, um zu überprüfen, ob der Rückruf ausgeführt wird.

instance.expects(:belongs_to_counter_cache_after_create_for_MODELNAME).returns(true) 
+0

Das ist eine saubere Lösung, ich habe diese dynamischen Methoden gesehen, aber ich habe nicht gemerkt, dass ich so kann. – dombesz

0

Fügen Sie einen Eintrag hinzu, laden Sie Ihr Objekt mit counter_cache neu und prüfen Sie, ob es inkrementiert ist.

+0

das ist, was ich tue, wollte nur wissen, ob ich vermeiden kann, die Datenbank zu schlagen. – dombesz