我正在尝试测试返回 pdf 文件的端点。
我的动作是这样的:
def pdf
respond_to do |format|
format.pdf do
@pdf = ApplicationController.render pdf: some_number,
template: "show",
layout: nil
send_data(@pdf, :filename => "something.pdf", :type => "application/pdf", disposition: 'attachment')
end
end
end
我的测试代码是这样的:
path "/pdf" do
get "return PDF" do
produces 'application/pdf'
response '200', 'PDF generated' do
schema type: :file
before do |example|
sign_in @some_user
submit_request(example.metadata)
end
it 'returns a 200 response' do |example|
assert_response_matches_metadata(example.metadata)
end
end
end
end
但我收到错误消息:
ActionController::UnknownFormat
我正在使用:
ruby 3.1.0
,rails 7.0.0
,rswag 2.8.0
,openapi 3.0.1
有人可以帮我解决我的问题吗?测试返回 pdf 的正确方法是什么?
控制器似乎无法确定请求的格式。您可以尝试通过添加以下行来指定请求的格式:
before do |example|
sign_in @some_user
header 'Accept', 'application/pdf'
submit_request(example.metadata)
end
这将告诉控制器该请求是针对 PDF 文件的,它应该能够呈现该文件并将其作为响应返回。