在 ruby on rails 中大摇大摆地测试返回 pdf

问题描述 投票:0回答:1

我正在尝试测试返回 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 的正确方法是什么?

ruby-on-rails testing rspec swagger rswag
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.