如何存根 WickedPdf?

Ruf*_*ff9 2 pdf ruby-on-rails wicked-pdf

我正在使用 wicked_pdf gem,目前正在尝试加快我的规范套件的速度。

我意识到我的一些规范正在我的 tmp 文件夹中生成 PDF,这非常耗时。

有没有办法完全存根 wicked_pdf 生成,因此它实际上不会生成 PDF?

Uni*_*key 5

这取决于您如何使用它,以及您想要在测试套件中删除多少内容,但可能一个好地方是WickedPdf::PdfHelper#make_pdf,您可以在 RSpec 测试中使用类似这样的内容进行存根:

describe MyController do
  describe '#show.pdf' do
    it 'creates a PDF'
      let(:tiny_pdf) do
        # What is the smallest possible valid PDF?
        # /sf/answers/1209661351/
        "%PDF-1.4\ntrailer<</Root<</Pages<</Kids[<</MediaBox[0 0 3 3]>>]>>>>>>"
      end

      # Here is the actual stubbing
      allow(WickedPdf::PdfHelper).to receive(:make_pdf).and_return tiny_pdf

      get :show, params: { id: 1, format: :pdf }
      expect(response.status).to eq 200
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

或者您可以通过重新打开类并更改定义来全局覆盖它:

if Rails.env.test?
  class WickedPdf
    class PdfHelper
      def make_pdf(options = {})
        "%PDF-1.4\ntrailer<</Root<</Pages<</Kids[<</MediaBox[0 0 3 3]>>]>>>>>>"
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 如果这可以帮助我在使用“allow(...)”时遇到错误,但可以使用以下命令修复它:“allow_any_instance_of(WickedPdf::PdfHelper).to receive(:make_pdf).and_return tiny_pdf” (2认同)