Rails 3 + Rspec 2: Validierung fehlgeschlagen: Email wurde bereits vergeben

8

Ich habe 2 Modelle, User und Bucket . User has_many Buckets und a Bucket belongs_to a User .

In factories.rb habe ich:

%Vor%

und ich habe ein login_user Modul wie folgt:

%Vor%

Ich benutze Spork und Watch und mein Buckets_controller_spec.rb ist so einfach wie:

%Vor%

Der Fehler ist immer der gleiche:

%Vor%

Und das passiert nur, wenn ich Factory(:bucket) habe. Die Anmeldung funktioniert einwandfrei, wenn ich% code% nicht hinzufüge.

Es ist immer derselbe Fehler. Ich habe versucht, Factory(:bucket) dem Benutzer hinzuzufügen, aber keinen Erfolg.

Bearbeiten:

In :email => Factory.next(:email) :

%Vor%

Bearbeiten 2:

Ich habe herausgefunden, dass der Fehler in der Assoziation liegt, aber ich weiß nicht, wie ich das beheben kann.

%Vor%     
donald 08.04.2011, 21:54
quelle

3 Antworten

6

Wenn Sie eine Fabrik mit einer Assoziation definieren, müssen Sie der Fabrik ein Objekt zuweisen, dem Sie bei jeder Verwendung der Fabrik beitreten können.

Das sollte funktionieren:

%Vor%

Auf diese Weise kann Factorygirl einen Bucket erstellen, der mit @user verknüpft ist.

    
David Tuite 12.04.2011, 03:51
quelle
5

Versuchen Sie dies in Ihrer Benutzerfabrik:

%Vor%

Ich denke, das ist wahrscheinlich dein Problem. Wenn Sie f.email = "anyvalue" verwenden, wird dieser Wert jedes Mal verwendet. Ich sehe, dass Sie im nächsten Block eine Sequenz erstellen wollten, aber ich bin nicht sicher, ob diese Sequenz verwendet wird.

BEACHTEN SIE AUCH, dass wenn Tests durch einen Absturz oder etwas unterbrochen werden, manchmal gefälschte Testdaten in Ihrer Test-DB verbleiben können, anstatt dass sie zurückgesetzt werden.

Als allererstes versuche ich, wenn etwas einmal funktioniert hat und dann mit der Arbeit aufhört, die Test-Datenbank zurückzusetzen.

%Vor%

Das wird alles sauber machen.

Wenn das nicht funktioniert, lass es mich wissen und ich werde einen zweiten Blick darauf werfen!

    
Andrew 08.04.2011 22:04
quelle
0

Wenn jemand dies kürzlich mit Ihren Ansichten bekommt. Verwenden Sie Datenbankbereinigung .

Weitere Informationen: RailsTutorial - Kapitel 8.4.3 - Testdatenbank wird nicht gelöscht, nachdem Benutzer im Integrationstest hinzugefügt wurde

    
LearningRoR 12.09.2012 00:24
quelle