Rails最小的命名空间

时间:2017-02-21 12:22:29

标签: ruby-on-rails-4 minitest

我有一个名称空间模型,即Billing::Plan。所以我把它的夹具放在test/fixtures/test/billing/plan.yml下面。 (实际上,将轨道生成器放在那里,所以我认为它是约定优于配置愉悦: - )

现在,当我运行单个测试时,它可以工作,但是当我尝试使用rake testguard运行我的所有测试套件时,夹具加载失败并出现此错误

ActiveRecord::StatementInvalid: ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "plans" does not exist

重要的部分是

ERROR:  relation "plans" does not exist

似乎fixtures :all文件中的test_helper.rb命令无法理解关系名称是billing_plans而不是plans

为什么?

1 个答案:

答案 0 :(得分:0)

我想到了fixtures :all does

需要调用set_fixture_class才能正确地将表名分配给命名空间的装置。

所以我解决了我的问题... ...

# test/test_helper.rb

module ActiveSupport
  class TestCase
    fixtures :all
    set_fixture_class 'billing/plan' => Billing::Plan # <= ...this line!
 end
end