【发布时间】: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