Der Hintergrund: Ich habe einige Probleme mit Thoughtbots "Factory Girl" -Edelstein, mit dem Objekte erstellt werden, die in Einheiten- und anderen Tests verwendet werden sollen. Ich möchte zur Konsole gehen und verschiedene Factory Girl-Anrufe ausführen, um herauszufinden, was passiert. Zum Beispiel würde ich gerne da reingehen ...
>> Factory(:user).inspect
Ich weiß, dass Sie die Konsole in verschiedenen Umgebungen ausführen können ...
$ script / console RAILS_ENV = test
Aber wenn ich das mache, ist die Factory-Klasse nicht verfügbar. Es sieht so aus, als würde test_helper.rb
es nicht geladen.
Ich habe verschiedene require
Anrufe ausprobiert, darunter einen mit dem absoluten Pfad zu, test_helper.rb
aber sie schlagen ähnlich fehl:
$ script/console RAILS_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
Errno::ENOENT: No such file or directory -
/Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb
Grr. Argh.
ruby-on-rails
ruby
testing
shoulda
Ethan
quelle
quelle
Antworten:
Für Schienen <3.0
Ausführen
script/console --help
. Sie werden feststellen, dass die Syntaxscript/console [environment]
wie in Ihrem Fall lautetscript/console test
.Ich bin nicht sicher, ob Sie den Testhelfer benötigen oder ob die Testumgebung dies für Sie erledigt, aber mit diesem Befehl sollten Sie zumindest in der Lage sein, die Testumgebung erfolgreich zu starten.
Als Nebenbemerkung: Es ist in der Tat seltsam, dass die verschiedenen Binärdateien im Skript / unterschiedliche Möglichkeiten zum Festlegen der Rails-Umgebung haben.
Für Schienen 3 und 4
Ausführen
rails c test
. Stellenbundle exec
Sie vor, wenn Sie dies für die aktuelle App-Umgebung benötigen.Für Schienen 5 und 6
Ausführen
rails console -e test
.quelle
rails console [environment]
rails server -e test
features/support/helpers.rb
wurde sie nicht automatisch geladen. AuchRack::Test
ist nicht geladen.Tun Sie in Rails 3 einfach
rails console test
oderrails console production
oderrails console development
(was die Standardeinstellung ist).quelle
Sollte alles sein, was Sie brauchen.
quelle
Für Rails 5.2.0: "Die Übergabe des Umgebungsnamens als reguläres Argument ist veraltet und wird in der nächsten Rails-Version entfernt. Verwenden Sie stattdessen die Option -e."
quelle
Sie können die Umgebung angeben, in der der Konsolenbefehl ausgeführt werden soll.
Beispiele
1) Für die Inszenierung
2) Für die Produktion
Für Quelle und detaillierte Beschreibung: Die Rails-Befehlszeile
quelle
David Smith ist richtig, tun Sie es einfach
Der Hilfebefehl zeigt, warum dies funktioniert:
Es ist das [Umwelt-] Bit.
quelle
Ich teile den Schmerz des Fragestellers. Hier gibt es wirklich drei verschiedene Fragen, von denen einige angesprochen werden, andere nicht:
Wie starte ich die Konsole in der Testumgebung?
Für neuere Rails-Versionen
bundle exec rails c test
oder alternative Syntaxen dafür.Wie stellen Sie sicher, dass test / test_helper.rb in diese Konsolensitzung geladen wird?
So etwas
require './test/test_helper'
sollte es tun.Für mich gibt dies true zurück, was darauf hinweist, dass es beim Starten der Konsole noch nicht geladen war. Wenn diese Anweisung false zurückgibt, haben Sie nur ein paar Tastenanschläge verschwendet, aber Sie können trotzdem loslegen.
Wie rufen Sie nach dem Laden von test_helper die darin definierten Methoden auf?
In einem typischen test_helper werden die benutzerdefinierten Methoden normalerweise als Instanzmethoden von ActiveSupport :: TestCase definiert. Wenn Sie also einen von ihnen aufrufen möchten, benötigen Sie eine Instanz dieser Klasse. ActiveSupport :: TestCase.new hat durch Ausprobieren einen erforderlichen Parameter, also ... übergeben Sie ihm etwas.
Wenn Ihr test_helper eine Methode namens create_user hat, können Sie diese folgendermaßen aufrufen:
ActiveSupport::TestCase.new("no idea what this is for").create_user
quelle
:random
standardmäßiginitialize
Methode geerbt wird . Es sieht jedoch so aus, als würde der erwartete Parameter wie@NAME
auf dem erstellten Objekt gespeichert .Stellen Sie sicher, dass Sie das GEM installiert und die folgende Zeile entweder in Ihrer Datei environment.rb oder test.rb hinzugefügt haben.
quelle
Test Env
Entwicklung Env
quelle
Befehl zum Ausführen der Rails-Konsolentestumgebung lautet
oder
wenn Sie vor einem Problem stehen
Dann sollten Sie zuerst Ihre Test-DB vorbereiten, indem Sie ausführen
quelle