wie kann ich das ändern von Umgebungsvariablen beim ausführen rspec für ruby?
Ich habe mehrere ruby-Skripten und testen mit rspec.
Legte ich meinen Umgebungen in einem env.rb-Datei (für jetzt), damit ich auf Sie zugreifen können, die lokal und in der Produktion setzen Sie Sie in den config-Variablen.
Aber wenn ich rspec, ich möchte verschiedene Umgebungsvariablen. Zwei Anwendungsfälle:
- Ich laufen Twilio, also ich möchte in der Lage sein zu ändern die SID verwendet werden, um Ihre Test-Anmeldeinformationen
- Ich Sachen lagern in einer Datenbank-als-service und wollen eine separate test-Datenbank
- Sie sollten benutzen Sie einfach die Umgebungsvariable in der test-suite. So initialisieren Sie ein Twillio client mit Ihren Zugangsdaten, statt Ihre Produktion Anmeldeinformationen.
- Wie setze ich Umgebungsvariablen in der test-suite ? Explizit in den Zusammenhang? Ich denke, das macht Sinn. Dank b
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
ENV["FOO_BAR"] = "baz"
Rails.env.test?
in Ihrem Initialisierungen, um das setup twilio und andere Kunden mit spezifischen test entscheidet sichIch persönlich bevorzuge ENV vars nur, wenn Objekte zu erstellen und dann vorbei an der env var Wert an den Konstruktor, damit ich testen kann die Klasse des Objekts, ohne sich darum zu kümmern ENV, und ich kann testen Sie das Objekt, das initialisiert das andere Objekt mit der env-var, nur durch die Geltendmachung der Erstellung verwendet, die env-var.
Also würden Sie etwas ändern, wie
zu
und haben, was ist die Initialisierung der Instanz zu, dann übergeben Sie den Wert des env var
diese Weise können Sie testen, die
Client
Klasse ohne Sorge über die env-var nur durch die übergabe einer url und kann dann testen Sie die Klasse, die instanziiert dieclient
alsein problem mit der Aktualisierung der env-var ist, dass die änderung beibehalten, während der rest der test-suite, und kann Probleme verursachen, wenn Sie nicht erwarten, dass es dort in einigen tests, in diesen Fällen können Sie verspotten Sie den Wert mit
before(:each)
. Beachten Sie, dass eine der Besonderheiten der Verwendung von env vars ist, dass, sobald Sie es auf der test-alle weiteren tests haben, die den Wert, die vielleicht harmlos, aber es ist gut im Auge zu behalten, wenn Sie sehen, dass tests, die passieren, wenn allein laufen, aber nicht beim laufen mit dem rest der suite