我正試圖寫出一個我的控制器的測試,它接受來自外部服務的請求。到目前爲止,這是我的測試:將標題附加到Rspec控制器測試
describe ApplyController do
context 'when valid' do
let(:parameters) do
file = File.join File.dirname(__FILE__), '..', 'samples', 'Indeed.json'
JSON.parse(File.read file)
end
let(:signature) { 'GC02UVj0d4bqa5peNFHdPQAZ2BI=' }
subject(:response) { post :indeed, parameters, 'X-Indeed-Signature' => signature }
it 'returns 200 ok if Request is valid' do
expect(response.status).to eq 200
end
end
end
這要根據documentation我可以find工作。
我的控制器現在看起來是這樣的:
class ApplyController < Application Controller
def indeed
binding.pry
end
end
當我進入撬在我的測試,並嘗試檢查request.headers['X-Indeed-Signature']
的價值,我總是隻得到nil
有什麼事,我我錯過了?我使用Rails 3.2和RSpec 3
事實證明,我實際上需要使用@ request.env ['X-Indeed-Signature']'而不是'@ request.headers' –
它看起來像我需要'@ request.env' in Rails 3和Rails 4中的'@ request.headers'。 –