質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

0回答

772閲覧

Rspec * Capybara でActionMailer のテストするとmail.bodyの日本語でおかしくなってエラーになる

nama-chan

総合スコア31

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2018/06/07 07:07

編集2018/06/07 07:32

rspec

context 'XXXX' do scenario "XXXXX" do 省略 mail = ActionMailer:: Base.deliveries.last expect(mail.body).to match "HAY" 省略 end end

メールテンプレート app/views/mailer/mail.text.erb

HAY あ

エラー内容

Failure/Error: expect(mail.body).to match "HAY" expected #<Mail::Body:0x00007fad434ba9b8 @boundary="--==_mimepart_5b18d949ce12c_70bb3fd69de666b837063", @pream...xt/html>, <Content-Transfer-Encoding: base64>>], @raw_source="", @ascii_only=true, @encoding="7bit"> to match "HAY" Diff: @@ -1,2 +1,13 @@ -"HAY" +#<Mail::Body:0x00007fad434ba9b8 + @ascii_only=true, + @boundary="--==_mimepart_5b18d949ce12c_70bb3fd69de666b837063", + @charset="US-ASCII", + @encoding="7bit", + @epilogue=nil, + @part_sort_order=["text/plain", "text/enriched", "text/html"], + @parts= + [#<Mail::Part:70191052652560, Multipart: false, Headers: <Content-Type: text/plain>, <Content-Transfer-Encoding: base64>>, + #<Mail::Part:70191067612540, Multipart: false, Headers: <Content-Type: text/html>, <Content-Transfer-Encoding: base64>>], + @preamble=nil, + @raw_source="">

subjectは日本語でもOK

#OK expect(mail.subject).to match "件名のてすと"

エンコードした場合
expect(mail.body.encoded).to match "HAY"

Failure/Error: expect(mail.body.encoded).to match "HAY" expected "\r\n----==_mimepart_5b18de57c36e0_75293fd69de666b8448c9\r\nContent-Type: text/plain;\r\n charset=UTF...\nL2E+CgogIDwvYm9keT4KPC9odG1sPgo=\r\n\r\n----==_mimepart_5b18de57c36e0_75293fd69de666b8448c9--\r\n" to match "HAY" Diff: @@ -1,2 +1,32 @@ -HAY + +----==_mimepart_5b18de57c36e0_75293fd69de666b8448c9 +Content-Type: text/plain; + charset=UTF-8 +Content-Transfer-Encoding: base64 + +SEFZCuOBggoK + +----==_mimepart_5b18de57c36e0_75293fd69de666b8448c9 +Content-Type: text/html; + charset=UTF-8 +Content-Transfer-Encoding: base64 + +PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgaHR0 +cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo +YXJzZXQ9dXRmLTgiIC8+CiAgICA8c3R5bGU+CiAgICAgIC8qIEVtYWlsIHN0 +eWxlcyBuZWVkIHRvIGJlIGlubGluZSAqLwogICAgPC9zdHlsZT4KICA8L2hl +YWQ+CgogIDxib2R5PgogICAgPGgxPjxhIGhyZWY9Imh0dHA6Ly9zb2NjZXJk +b3VnYS5vbmxpbmUiPuOCpuOCpOOCpOODrOWLleeUu09OTElORTwvYT48L2gx +PgoKPHA+IHJpa2loaXNh44GV44KT44CB44Km44Kk44Kk44Os5YuV55S744G4 +44Gu44Om44O844K255m76Yyy44GC44KK44GM44Go44GG44GU44GW44GE44G+ +44GZ44CCPC9wPgo8cD4K5paw6KaP44Om44O844K255m76Yyy44Gu5pyA5b6M +44Gu44K544OG44OD44OX44Gn44GZ44CC5LiL44Gu44Oq44Oz44Kv44KS44Kv +44Oq44OD44Kv44GX44Gm44CB44Oh44O844Or44Ki44OJ44Os44K544Gu56K6 +6KqN44KS6KGM44Gj44Gm44GP44Gg44GV44GE44CCCjwvcD4KCgo8YSBocmVm +PSdodHRwOi8vMTkyLjE2OC4wLjE1L2FjY291bnRfYWN0aXZhdGlvbnMvNUhX +SjhvUWxNNzE5RHJLXzN5NkVyQS9lZGl0P2VtYWlsPXRlc3QtZW1haWxAdGVz +dC5jb20nPuOCouOCq+OCpuODs+ODiOOBrueiuuiqjeOBr+OBk+OBoeOCiSA8 +L2E+CgogIDwvYm9keT4KPC9odG1sPgo= + +----==_mimepart_5b18de57c36e0_75293fd69de666b8448c9--

エンコードしたときにメールテンプレートから日本語を削除すると、上手くテストが通ります。

gmailなどで確認すると日本語はちゃんと表示されています。しかしテストが通りません。テストを通したいです。

上記Rspecを実行すると、エラーになります。メールのテンプレートの内容がHAYだけだとうまくいきますが、日本語が含まれるとうまくいきません。件名に日本語が入ってて問題ありません。ご教示おねがいします。宜しくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gouf

2018/06/08 06:47

「mail.body.encoded」ではなく「mail.body.raw_source」にした場合に、なにか変化は見られますか?
nama-chan

2018/06/19 01:11

すみません、気づくのが遅れてしまいした(汗)試してみましたが、変化はありませんでした。ちょっとよくわからず、とりあえずbodyに関してはテストをスルーしてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問