1

我认为这是一个 Rails 约定,邮件程序固定装置驻留在以该邮件程序类名称命名的文件夹中,并且在该文件夹内是以邮件程序类中的每个操作命名的固定装置。

但是当我运行单元测试时,我注意到 rails 引发和错误,因为它试图在邮件程序类和邮件程序操作类放在一起之后删除测试表名称......这很奇怪,我会假设 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

当我尝试在终端中使用 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
4

2 回答 2

6

尽管有 Rails 文档,但我会回答我自己的问题:如果您不希望将它们加载到数据库中,邮件装置应该是 .txt 文件而不是 .yml 文件。也许有一天我会为文档做出贡献。

于 2012-03-13T02:02:16.100 回答
0

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

于 2012-07-26T22:01:34.683 回答