埋め込まれた ActionMailer サブクラスのビューを含むRails gem/engine を呼び出しました。how_slow
gem がアプリケーションにインストールされると、ビューがトリガーされ、電子メールが送信されます。ただし、テスト(私はミニテストを使用しています)では、ビューが取得されないか、アクセスできないため、次の呼び出しが行われます。
HowSlow::Mailer.metrics_email.body.to_s
""
...意図したとおり、メールの内容ではなく空の文字列 ( ) を返します。
実際、gem/エンジンのプレリリース版を使用するアプリ内で同じ呼び出しを行うと、期待どおりにテキスト メールの内容が返されます。
エンジンビューを宝石/エンジン自体の内部のテストに表示するという点で何か不足していますか?
例:
このブランチの現在のバージョンの gem を含むアプリ内で取得します (読みやすいように改行を分割しました)。
> HowSlow::Mailer.metrics_email.body.to_s
=> "Slowest 12 requests, sorted by total_runtime:
--------------------
2013-06-22T11:42:21-05:00 :: sections/show 270 / 12 / 249
2013-06-21T22:50:21-05:00 :: log_books/index 263 / 23 / 225
2013-06-22T11:42:18-05:00 :: log_books/index 257 / 24 / 217
2013-06-22T11:42:21-05:00 :: log_books/show 58 / 9 / 0
2013-06-22T11:42:24-05:00 :: sections/show 56 / 4 / 14
2013-06-22T11:42:20-05:00 :: log_books/index 39 / 11 / 27
2013-06-22T11:42:26-05:00 :: log_books/index 38 / 12 / 25
2013-06-22T11:42:31-05:00 :: sections/show 38 / 5 / 30
2013-06-22T11:42:25-05:00 :: sections/show 28 / 4 / 20
2013-06-22T11:42:28-05:00 :: sections/show 21 / 4 / 14
2013-06-22T11:42:32-05:00 :: sections/show 20 / 3 / 12
2013-06-22T11:42:28-05:00 :: log_books/show 5 / 1 / 0
Counters sorted by alpha_asc:
--------------------"
問題のビューはこちら: https://github.com/normalocity/how_slow/blob/12-mailer/app/views/how_slow/mailer/metrics_email.text.erb
ただし、テスト フレームワークでは、(空の文字列)への呼び出しがHowSlow::Mailer.metrics_email.body.to_s
返されます。""