InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Bei der Einrichtung von Tests in einem neuen Projekt, das mehrere Modelle umfasst - User, Post und so weiter. Alle Fabriken wurden normal registriert, außer User.
Lade Entwicklungsumgebung (Rails 7.0.4.3) irb(main):001:0> FactoryBot.create(:user) /Users/memecode/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activesupport-7.0.4.3/lib/active_support/hash_with_indifferent_access.rb:194:in `fetch': Fabrik nicht registriert: "user" (KeyError) /Users/memecode/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activesupport-7.0.4.3/lib/active_support/hash_with_indifferent_access.rb:194:in `fetch': Schlüssel nicht gefunden: "user" (KeyError)
Der Aufruf von FactoryBot.factories bestätigte ebenfalls, dass alle Fabriken außer User registriert sind. Nach der Suche nach der Ursache stellte sich heraus, dass einfach die Bibliothek FactoryBot installiert war, wir jedoch FactoryBot für Rails benötigen.
Beheben wir den Fehler bei der Registrierung der Fabrik (Fabrik nicht registriert: "user")
Also ändern wir:
gem 'factory_bot', '~> 6.5'
in
gem 'factory_bot_rails', '~> 6.4', '>= 6.4.4'
Natürlich führen wir aus
bundle
Und alles wird funktionieren. factory_bot_rails hat factory_bot als Abhängigkeit, also benötigen wir nur die Bibliothek in unserem Gemfile.
Was ist der Unterschied zwischen factory_bot und factory_bot_rails?
factory_bot ist die Hauptbibliothek für die Arbeit mit Fabriken, eine Art "einfaches Ruby-Werkzeug". Wenn Sie eine einfache und zuverlässige Möglichkeit benötigen, Testdaten in Ruby zu erstellen, ist factory_bot die Lösung für diese Aufgabe.
Es ermöglicht Ihnen, Fabriken zu definieren, die Modelle mit bequemen Einstellungen erstellen. Möchten Sie einen Benutzer generieren? Anstatt alle Parameter manuell einzugeben, füllt factory_bot sie automatisch für Sie aus. Aber es gibt eine Bedingung: Sie müssen selbst dafür sorgen, wie diese Fabriken in Ihrem Projekt geladen werden, insbesondere wenn es sich um etwas Komplexeres als eine Standard-Rails-Anwendung handelt.
Und was ist factory_bot_rails? Es ist eher ein "Hilfswerkzeug", das entwickelt wurde, um die Arbeit mit factory_bot in Rails so nahtlos wie möglich zu gestalten.
Stellen Sie sich vor, Sie haben eine große Rails-Anwendung mit mehreren Dutzend Modellen und Tests. Anstatt jedes Mal manuell die Verbindung zu den Fabriken einzurichten, erledigt factory_bot_rails dies automatisch. Es integriert sich in die Testumgebung von Rails und stellt sicher, dass alle Fabriken bereit zur Verwendung sind. Darüber hinaus fügt es einige nützliche Befehle in Rails hinzu, beispielsweise zum schnellen Erstellen von Fabriken für neue Modelle.
Zusammenfassend kann man sagen, dass factory_bot die Grundlage ist, während factory_bot_rails die Hülle ist, die diese Grundlage für Rails-Entwickler bequem macht. Sie arbeiten zusammen: die erste bietet Funktionalität, die zweite Komfort. Wenn Sie eine Rails-Anwendung haben, reicht es aus, nur factory_bot_rails zu verwenden, da es bereits alles Notwendige enthält. Aber wenn Sie Fabriken außerhalb von Rails verwenden oder sie an Ihre Bedürfnisse anpassen möchten, benötigen Sie factory_bot.
Es ist auch erwähnenswert, dass die Bibliothek Faker sehr häufig zur Generierung von Inhalten in Fabriken verwendet wird. Sie spart Zeit und ermöglicht es, Objekte zu erstellen, die realistischeren ähneln.
Dieser Beitrag hat noch keine Ergänzungen vom Autor.