Ruby on rails 如何在rspec中设置请求头
您好,我正在使用ruby-2.5.0和Rails 5进行RoR项目。我正在使用rspec测试我的代码。我有一个控制器,我在其中使用before_操作验证用户的令牌,如下所示:-Ruby on rails 如何在rspec中设置请求头,ruby-on-rails,rspec,rspec-rails,Ruby On Rails,Rspec,Rspec Rails,您好,我正在使用ruby-2.5.0和Rails 5进行RoR项目。我正在使用rspec测试我的代码。我有一个控制器,我在其中使用before_操作验证用户的令牌,如下所示:- abc_controller.rb class ParserController < ApplicationController before_action :validate_token def create store_name,reciept = StoreParserInteractor.
abc_controller.rb
class ParserController < ApplicationController
before_action :validate_token
def create
store_name,reciept = StoreParserInteractor.find_store(parser_params,@user_id)
if reciept.present?
render json: JSONAPI::Serializer.serialize(reciept),
status: :ok
elsif store_name.present?
render json: {'error': 'date / time on receipt not found'},
status: 400
else
render json: {'error': 'store name not found'},
status: 400
end
rescue StandardError
render json: {}, status: 500
end
private
def parser_params
params.require(:data)
.permit!
.transform_keys(&:underscore)
end
end
我必须在头中传递身份验证令牌。请帮助我如何创建用户并在标题中传递该令牌。提前感谢。您可以在
post
方法中将:headers
作为选项传递:
it "date / time on receipt not found" do
my_params = {}
my_user_token = user.generate_api_token
post :create, params, headers: { "login-token" => my_user_token }
# post parsers_path, my_params, headers: { "login-token" => my_user_token }
expect(response.status).to eq 400
end
谢谢我将Rails 4.2.11.1更新为5.0.7,并且
cookies[:my_cookie]=“chocolate\u muffin”
停止保存,这对我很有帮助
describe ParserController do
describe 'POST create' do
subject { post :create, params: params }
context 'when store is found' do
let(:params) do
{
"Lines": [{
"Words": [{
"WordText": "WELCOME",
"Left": 655,
"Top": 442,
"Height": 23,
"Width": 91
}],
"MaxHeight": 23,
"MinTop": 442
},
{
"Words": [{
"WordText": "FOR",
"Left": 620,
"Top": 1785,
"Height": 22,
"Width": 37
},
{
"WordText": "CUSTOM",
"Left": 738,
"Top": 1785,
"Height": 22,
"Width": 79
}
],
"MaxHeight": 22,
"MinTop": 1785
},
{
"Words": [{
"WordText": "rpos",
"Left": 477,
"Top": 1915,
"Height": 22,
"Width": 48
}],
"MaxHeight": 22,
"MinTop": 1915
},
{
"Words": [{
"WordText": "402!",
"Left": 479,
"Top": 2209,
"Height": 22,
"Width": 46
},
{
"WordText": ".28",
"Left": 597,
"Top": 2208,
"Height": 23,
"Width": 37
}
],
"MaxHeight": 23,
"MinTop": 2208
}
],
"HasOverlay": true,
"Message": "Total lines: 42"
}
end
before do
allow(controller).to receive(:validate_token).and_return(true)
end
it { is_expected.to have_http_status(400) }
end
end
end
it "date / time on receipt not found" do
my_params = {}
my_user_token = user.generate_api_token
post :create, params, headers: { "login-token" => my_user_token }
# post parsers_path, my_params, headers: { "login-token" => my_user_token }
expect(response.status).to eq 400
end