ruby-on-rails 在ruby on rails中使用swagger返回pdf

ux6nzvsh  于 2023-04-08  发布在  Ruby
关注(0)|答案(1)|浏览(167)

我正在测试一个返回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.0rails 7.0.0rswag 2.8.0openapi 3.0.1
有谁能帮我解决这个问题吗?测试返回PDF的正确方法是什么?

k5hmc34c

k5hmc34c1#

控制器似乎无法确定请求的格式。您可以尝试添加以下行来指定请求的格式:

before do |example|
  sign_in @some_user
  header 'Accept', 'application/pdf'
  submit_request(example.metadata)
end

这将告诉控制器该请求是针对PDF文件的,并且它应该能够呈现该文件并将其作为响应返回。

相关问题