1

メーラー フィクスチャはそのメーラー クラス名にちなんで名付けられたフォルダーに存在し、そのフォルダー内にはメーラー クラスの各アクションにちなんで名付けられたフィクスチャーがあるというのが 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
4

2 に答える 2

6

Railsのドキュメントにもかかわらず、私自身の質問に答えます.DBにロードしたくない場合は、メーラーフィクスチャは.ymlファイルではなく.txtファイルにする必要があります。いつかドキュメントに貢献するかもしれません。

于 2012-03-13T02:02:16.100 に答える
0

すべてのサブフォルダーをテスト/ファイルに移動しました

于 2012-07-26T22:01:34.683 に答える