Rails 3加载邮件固定装置。我如何阻止这种情况发生?

时间:2012-03-13 01:26:29

标签: ruby-on-rails-3 testing fixtures mailer

我认为这是一个Rails约定,邮件程序夹具位于以该邮件程序类名称命名的文件夹中,并且该文件夹内部是以邮件程序类中的每个操作命名的固定程序。

但是当我运行我的单元测试时,我注意到rails加注和错误,因为它试图在邮件程序类和邮件程序操作类放在一起后删除测试表名称...这很奇怪,我会假设rails会知道更好地忽略这些仅用于邮件内容格式比较的灯具。

关于邮件装置的Rails 3文档:

  

10.2.1固定装置的复仇

     

为了对邮件进行单元测试,使用固定装置   提供输出应该如何显示的示例。因为这些是   示例电子邮件,而不是像其他灯具一样的Active Record数据,   除了其他灯具外,它们都保存在自己的子目录中。   test / fixtures中的目录名称直接对应于   邮件的名称。因此,对于名为UserMailer的邮件程序,   fixtures应该驻留在test / fixtures / user_mailer目录中。

我正在使用rails 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

当我尝试在终端中使用rake加载灯具时,我收到类似的错误:

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

2 个答案:

答案 0 :(得分:6)

我会回答我自己的问题,尽管Rails文档:mailer fixtures应该是.txt文件而不是.yml文件,如果你不想将它们加载到DB中。也许有一天我会为文档做出贡献。

答案 1 :(得分:0)

我将所有子文件夹移动到测试/文件