Warum aktualisiert diese rspec-Anforderungsspezifikation das Modell nicht?

8

Ich habe eine Anforderungsspezifikation für Interaktionen mit dem Benutzermodell. Ich möchte sicherstellen, dass Benutzer mit der Rolle "Admin" Benutzer erstellen / bearbeiten / löschen können. Ich habe gerade ein Problem, bei dem die Aktion Bearbeiten den Benutzer nicht aktualisiert. Alles funktioniert ordnungsgemäß, wenn ich manuell die Aktionen auf der Website selbst durchführe, aber die Tests den Benutzer nicht aktualisieren.

Hier ist meine Spezifikation:

%Vor%

Der Fehler, den ich bekomme, ist:

%Vor%

Wenn ich die letzten paar Zeilen des Tests ändere:

%Vor%

Dann ist der Test erfolgreich. Dies scheint nicht richtig zu sein, da die Seite "John Changed" nicht anzeigen sollte, wenn user_to_edit nicht aktualisiert wurde.

Meine Delete-Anforderungsspezifikation funktioniert einwandfrei:

%Vor%

Ich habe ein Benutzermodell:

%Vor%

Ich habe diese Fabrik:

%Vor%

Ich habe diese Aktionen in meinem Benutzercontroller:

%Vor%

Die Datei routes.rb ist ebenfalls relevant, da ich Devise verwende und einen benutzerdefinierten Benutzer-Controller habe:

%Vor%     
James Chevalier 11.02.2013, 15:16
quelle

1 Antwort

18

Sie werden getäuscht, wie schlaue Test-Frameworks aussehen :) sicherlich erwarten Sie, dass sich der db-Eintrag für user_to_edit ändert. user_to_edit ist eine lokale Variable, so dass sich user_to_edit.last_name nicht ändert, egal welche Schaltflächen Sie anklicken. Versuchen Sie es mit { user_to_edit.reload.last_name }

    
Viktor Trón 11.02.2013, 16:04
quelle