So testen Sie Mongoid :: Observer mit rspec

8

Bei einem einfachen Mongodendatenmodell mit einem Benutzer, der viele Kommentare hat, möchte ich dem Benutzer ein bestimmtes Abzeichen verleihen, wenn er mindestens einen Kommentar schreibt. Also habe ich einen Beobachter wie folgt aufgestellt:

%Vor%

Die user.award-Methode:

%Vor%

Der folgende Test schlägt fehl (aber ich denke, das ist normal, weil Beobachter im Hintergrund ausgeführt werden?)

%Vor%

Was könnte der beste Weg sein, um dieses Verhalten zu überprüfen?

    
obo 22.11.2011, 09:20
quelle

1 Antwort

7

Ich habe eine funktionierende eigenständige Anpassung Ihres Codes (siehe unten). Ich musste drei kleine Änderungen vornehmen, damit es so funktionierte, wie Sie es erwartet hatten.

Damit der Observer funktioniert, musst du ihn instanziieren. In meinem Beispiel musste ich die Zeilen hinzufügen:

%Vor%

In Rails können Sie dasselbe erreichen, indem Sie dies zu config / application.rb hinzufügen (gemäß den Dokumenten ) ):

%Vor%

Ich denke, es gibt auch einen kleinen logischen Fehler in CommentBadge.check_conditions_for , der > 1 sollte > 0 sein.

Schließlich habe ich die User#award -Methode geändert, um das Badge und nicht den Benutzer zu speichern, da das Feld "Fremdschlüssel", das die Beziehung speichert, auf der Badgeseite steht.

%Vor%     
Steve 25.11.2011, 15:29
quelle