Rails:Fixture - StandardError:没有为表'xyz'找到名为'abcd'的夹具

时间:2014-02-17 11:06:20

标签: ruby-on-rails unit-testing fixtures

在运行我的单元测试时,我收到以下错误:

StandardError: No fixture with name 'abcd' found for table 'xyz'

我确实在 test / fixtures / xyz.yml

中确实存在一个名为“abcd”的夹具

我的test_helper.rb的内容

ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require 'action_view/test_case'

class ActiveSupport::TestCase
 unless Test::Unit::TestCase.const_defined?('FIXTURE_CLASS_MAP')
    Test::Unit::TestCase::FIXTURE_CLASS_MAP = {
      :feedback_forms => Feedback::Form,
    }
  end

  self.use_transactional_fixtures = true
  self.use_instantiated_fixtures  = false
  set_fixture_class FIXTURE_CLASS_MAP
end

请帮助我理解为什么会出现这种错误。

更新:我刚才发现,在运行测试时,DB中的记录被删除(对于该表),夹具文件中的记录被插入到DB表中。 在我的情况下,并非所有记录都被插入到表中(只插入了第一条记录) - 有关它为何会发生的任何线索?

由于 拉姆亚

1 个答案:

答案 0 :(得分:0)

这是一个老问题,但我的猜测是你没有指定相关的模型关联。除非您在app/models/xyz.rb中指定了以下内容,否则示例中的命名夹具将无效:

class XYZ < ActiveRecord::Base
  belongs_to :abcd
end