Setzen von geschützten Attributen mit FactoryGirl

8

FactoryGirl wird mein geschütztes Attribut user.confirmed nicht setzen. Was ist die beste Vorgehensweise hier?

%Vor%

Ich kann eine @user.confirmed = true nach der Verwendung meiner Factory machen, aber das ist eine Menge Wiederholungen in vielen Tests.

    
brittohalloran 18.01.2012, 05:29
quelle

3 Antworten

10

Die Verwendung eines after_create Hook funktioniert:

%Vor%     
brittohalloran 18.01.2012, 19:04
quelle
3

Sie müssten es beim Erstellen des Benutzers in den Hashwert eingeben, da FactoryGirl es vor einer Massenzuweisung schützt.

%Vor%     
iwasrobbed 18.01.2012 06:01
quelle
0

Ein anderer Ansatz besteht darin, die eingebauten Rollen von Rails wie folgt zu verwenden:

%Vor%

Bei der Massenzuweisung sendet FactoryGirl diese Rolle, wodurch dieses Muster möglich wird.

Vorteile: Hält Fabriken schnell, einfach und sauber (weniger Code in Rückrufen)
Nachteile: Sie ändern Ihren Modellcode für Ihre Tests :(

Einige ungeprüfte Vorschläge, um die Con zu behandeln:

  • Sie können die Klasse direkt über Ihrer Fabrik öffnen.
  • Sie könnten die Klasse in [test | spec] _helper
  • erneut öffnen
Chip 03.06.2013 16:14
quelle