Ich möchte FactoryGirl verwenden, um In-Memory-Stubs von Modellen zu erstellen, dann müssen alle ActiveRecord-Abfragen nur für diese ausgeführt werden. Zum Beispiel:Wie vermeide ich vollständig die Verwendung einer Datenbank in RSpec-Tests?
# Assume we start with an empty database, a Foo model,
# and a Foo factory definition.
#foo_spec.rb
stubbed_foo = FactoryGirl.build_stubbed(:foo)
# Elsewhere, deep in the guts of application
Foo.first() # Ideally would return the stubbed_foo we created
# in the test. Currently this returns nil.
Die Lösung könnte die Verwendung einer In-Memory-Datenbank sein. Aber ist das obige Szenario möglich?
Wenn Sie keine Tabellen haben, dann gibt es kein Schema für Modelle, damit Ihr Stubbed-Modell sich wie jedes Objekt verhalten kann, ohne mit dem tatsächlichen Schema übereinstimmen zu müssen wird in der Produktion existieren. Das wäre wahrscheinlich eine schlechte Idee. Warum versuchen Sie ActiveRecord auf diese Weise zu umgehen? –
Sie könnte Fixtures anstelle von Fabrik Mädchen – trueinViso
@trueinViso Ich glaube nicht, Fixtures würde mein Problem zu lösen, wie die Foo-Klasse würde immer noch auf die Datenbank gehen beim Aufruf 'first()' oder eine andere Abfrage-Methode. –