【问题标题】:How to set header_cookies in rspec mailers如何在 rspec 邮件程序中设置 header_cookies
【发布时间】:2021-09-17 00:37:06
【问题描述】:

在我的邮件中,我使用 header_cookies 生成附件的 pdf 文件(从控制器传递它)。如何在articles_spec.rb 测试中生成header_cookies

文章邮寄者:

class ArticlesMailer < ActionMailer::Base

  def send_article(article, header_cookies)
    @article = article
    @user = @article.user
    attachments['article.pdf'] = prepare_pdf_file

    mail(
      subject: "Article №#{@article.id}",
      to: @user.email
    )
  end

  def prepare_pdf_file(header_cookies)
    Grover.new(pdf_view_article_url(@article), cookies: header_cookies).to_pdf
  end
end

文章控制器

def create
   @articele = Article.new(article_params)
   if @article.save
      ArticlesMailer.send_article(@article, header_cookies).deliver_now
   else
      render :new
   end
end

artilces_spec.rb

RSpec.describe ArticlesMailer, type: :mailer do
  describe "send_article" do
    let!(:admin) { create(:user, :superadmin) }
    let!(:article) { create(:article, user: admin) }
    let!(:mail) { ArticlesMailer.send_article(article, header_cookies) }
    let(:article_preview_page) { preview_article_path(user_id: admin.id, id: article.id) }

    it "renders the headers" do
      expect(mail.subject).to eq("Article №#{article.id}")
      expect(mail.to).to eq admin.email
    end

    it "renders the body" do
      expect(mail.body.encoded).to match("Hi #{admin.name}")
    end
  end
end

【问题讨论】:

    标签: ruby-on-rails ruby rspec actionmailer


    【解决方案1】:

    您是否尝试创建header_cookies 对象并将其传递给send_article 调用?

      let!(:header_cookies) do
        [
          { name: 'sign_username', value: 'any@any.com', domain: 'mydomain' },
          { name: '_session_id', value: '9c014df0b699d8dc08d1c472f8cc594c', domain: 'mydomain' }
        ]
      end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-31
      • 2015-10-23
      • 2020-02-09
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      相关资源
      最近更新 更多