在运行我的单元测试时,我收到以下错误:
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表中。 在我的情况下,并非所有记录都被插入到表中(只插入了第一条记录) - 有关它为何会发生的任何线索?
由于 拉姆亚
答案 0 :(得分:0)
这是一个老问题,但我的猜测是你没有指定相关的模型关联。除非您在app/models/xyz.rb
中指定了以下内容,否则示例中的命名夹具将无效:
class XYZ < ActiveRecord::Base
belongs_to :abcd
end