Sie können ein wenig schummeln, indem Sie einen Mutator für den Wert remote_ip in der Testumgebung erstellen, der normalerweise nicht definiert ist.
Ändern Sie zum Beispiel die Klasse in test/test_helper.rb wie folgt:
class ActionController::TestRequest
def remote_ip=(value)
@env['REMOTE_ADDR'] = value.to_s
end
end
Während der Prüfung können Sie dann nach Bedarf neu zuordnen:
def test_something
@request.remote_ip = '1.2.3.4'
end
Dies kann entweder im Einzeltest oder im Rahmen Ihrer Einrichtungsroutine geschehen, wo immer dies angebracht ist.
Ich musste dies bereits beim Schreiben von Funktionstests zur Überprüfung von IP-Sperren, Geolokalisierung usw. verwenden.