1

私のメーラーには、スペイン語形式の日付があります。

土曜日、2012年7月21日

config / locales/es.ymlで構成されたカスタムフォーマッターがあります

my_date_format: ! '%A, %-d de %B del %Y, %k:%M'

私はそれをこのようにテストしようとしています:

test "date with accent" do
  mail = MyMailer.my_template

  assert_match I18n.l(@object.date, format: :my_date_format), mail.body.encoded
end

しかし、失敗します。

#テストの実行:

F

0.438078秒、2.2827テスト/秒、15.9789アサーション/秒でテストを終了しました。

1)失敗:test_date_with_accent(MyMailerTest)[test / unit / mailers / my_mailer_test.rb:12]:/sábado、\ 21 \ de \ julio \ del \ 2012、\ 14:10/が"....。 ........ s = C3 = A1bado、21 de julio del 2012、14:10 \ r \ n........"。

(残りの電子メールコンテンツは省略しました)

4

1 に答える 1

1

エンコードされた本文は「quotedprintable」なので、テスト日付をエンコードしましょう。

まず、Stringのカスタムメソッドを作成します。

class String
  def to_quoted_printable(*args)
    [self].pack("M").gsub(/\=\n/, "")
  end
end

これはtest_helper.rb内に配置できます

次に、そのカスタムメソッドを使用して日付値を準備し、照合を実行できるようにします。

assert_match I18n.l(@object.date, format: :my_date_format).to_quoted_printable, mail.body.encoded

これで、日付が適切にエンコードされ、テストに合格します。

または、さらに簡単に、電子メールの本文をエンコードする必要がないため、これも実行できます。

assert_match I18n.l(@object.date, format: :my_date_format), mail.text_part.body.to_s
于 2012-07-19T14:26:17.767 に答える