3

I'm using email_spec gem to test a simple email, but for some reason the body content appears to be empty:

  1) ContactMailer welcome email to new user renders the body
     Failure/Error: mail.should have_body_text("Hi")
       expected the body to contain "Hi" but was ""
     # ./spec/mailers/contact_mailer_spec.rb:17:in `block (3 levels) in <top (required)>'

Every other example passes. The template file is called welcome_email.text.erb. Not sure why body is not matched, but the email does have a body when it gets sent.

Edit: the Rspec code is:

let(:mail) { ContactMailer.welcome_email(email) }


it "renders the body" do
  mail.should have_body_text("Hi")
end
4

2 に答える 2

8

これを行うために私が見つけた最良の方法は次のとおりです。

it "contains a greeting" do
  mail.html_part.body.should match /Hi/
end

マルチパート メッセージのプレーン テキスト部分を確認する場合text_partは、代わりに使用することもできます。html_part

また、 の使用を推奨する人もいるかも#encodedしれませんが、エンコード処理中に行が折り返される可能性があるため、長い URL で使用するのに苦労しました。

于 2012-03-02T17:03:02.667 に答える