meine API Verbraucher Gegeben sind verpflichtet, einen Kunden-HTTP-Header wie folgt an:Senden benutzerdefinierte Header durch RSpec
# curl -H 'X-SomeHeader: 123' http://127.0.0.1:3000/api/api_call.json
Dann kann ich diesen Header in einem before_filter Methode wie folgt lesen:
# app/controllers/api_controller.rb
class ApiController < ApplicationController
before_filter :log_request
private
def log_request
logger.debug "Header: #{request.env['HTTP_X_SOMEHEADER']}"
...
end
end
Soweit großartig. Nun würde Ich mag diese mit RSpec testen, da es eine Änderung im Verhalten ist:
# spec/controllers/api_controller_spec.rb
describe ApiController do
it "should process the header" do
@request.env['HTTP_X_SOMEHEADER'] = '123'
get :api_call
...
end
end
jedoch die request
in ApiController empfing nicht in der Lage sein, die Header-Variable zu finden.
Wenn Sie die same code
mit dem Header HTTP_ACCEPT_LANGUAGE versuchen, wird es funktionieren. Werden benutzerdefinierte Header irgendwo gefiltert?
PS: Einige Beispiele im Internet verwenden request
statt @request
. Während ich nicht sicher bin, welches ist korrekt als der aktuellen Rails 3.2/RSpec 2.14 Kombination - beide Methoden werden nicht das richtige Verhalten auslösen, aber beide arbeiten mit HTTP_ACCEPT_LANGUAGE
als auch.
Sorry - Ihre Antwort kam in genau wie ich dies auch getestet. Bitte beachten Sie das Update. Vielen Dank. –
Überprüfen Sie mein Update. –
Nochmals vielen Dank - Ich habe es auch versucht und es wird nicht für mich arbeiten. Haben Sie dies erfolgreich in einer RSpec Controller-Spezifikation getestet? –