メーラー フィクスチャはそのメーラー クラス名にちなんで名付けられたフォルダーに存在し、そのフォルダー内にはメーラー クラスの各アクションにちなんで名付けられたフィクスチャーがあるというのが Rails の規則であると想定しました。
しかし、ユニットテストを実行すると、メーラークラスとメーラーアクションクラスがまとめられた後にテストテーブル名を削除しようとするため、レールが発生してエラーになることに気付きます...これは奇妙です。これらのフィクスチャは、単にメーラー コンテンツの書式設定の比較に使用されます。
メーラーフィクスチャに関する Rails 3 ドキュメント:
10.2.1 備品のリベンジ
メーラーの単体テストの目的で、フィクスチャを使用して、出力がどのように見えるかの例を提供します。これらはメールの例であり、他のフィクスチャのような Active Record データではないため、他のフィクスチャとは別の独自のサブディレクトリに保持されます。test/fixtures 内のディレクトリの名前は、メーラーの名前に直接対応しています。したがって、UserMailer という名前のメーラーの場合、フィクスチャは test/fixtures/user_mailer ディレクトリに存在する必要があります。
私はレール3.0.12を使用しています
テスト ヘルパーの内容:
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
class ActiveSupport::TestCase
fixtures :all
# Add more helper methods to be used by all tests here...
end
私の備品ディレクトリのレイアウト:
test/fixtures/card_sender_mailer/card_update_notificaiton.yml
これはエラーです:
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'monkey_test.card_sender_mailer_card_update_notification' doesn't exist: DELETE FROM `card_sender_mailer_card_update_notification`
すべてのフィクスチャをロードしているため、これもロードしようとしていると思います。メーラーフィクスチャ以外のすべてのフィクスチャをロードするにはどうすればよいですか?
更新 1
端末でレーキを使用してフィクスチャをロードしようとすると、同様のエラーが発生します。
Tasks: TOP => db:fixtures:load
(See full trace by running task with --trace)
/Users/victorstan/Sites/ContactMonkey ∴ bundle exec rake db:fixtures:load
rake aborted!
Mysql2::Error: Table 'monkey_development.card_sender_mailer_card_update_notification' doesn't exist: DELETE FROM `card_sender_mailer_card_update_notification