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

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

ただいまの
回答率

90.61%

  • Ruby on Rails 5

    1560questions

  • メール

    249questions

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

  • RSpec

    173questions

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

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

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 179

nama-chan

score 13

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だけだとうまくいきますが、日本語が含まれるとうまくいきません。件名に日本語が入ってて問題ありません。ご教示おねがいします。宜しくおねがいします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • gouf

    2018/06/08 15:47

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

    キャンセル

  • nama-chan

    2018/06/19 10:11

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

    キャンセル

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

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby on Rails 5

    1560questions

  • メール

    249questions

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

  • RSpec

    173questions

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