你如何解决FixtureClassNotFound:找不到附加的类

Yon*_*ciu 11 fixtures ruby-on-rails-3

运行我的测试时出现此错误:

FixtureClassNotFound: No class attached to find
Run Code Online (Sandbox Code Playgroud)

是什么导致此错误以及如何解决?

Yon*_*ciu 26

很可能发生这种情况是因为自定义表名用于模型(使用set_table_name)或模型位于模块中.

要解决此问题,您需要在'fixtures:all'行之前在test_helper.rb中添加set_fixture_class行:

class ActiveSupport::TestCase

  self.use_transactional_fixtures = true
  .
  .
  .
  set_fixture_class my_table_name: MyModule::MyClass

  fixtures :all

end
Run Code Online (Sandbox Code Playgroud)

在这种情况下,fixtures文件应该被称为my_table_name.yml

  • 如果你的课不在一个模块中(你的答案不是100%清楚),那可能是由于一个奇怪的模型名称,Rails的变形器不知道如何正确地单一化.在这种情况下,最好在config/initializers/inflections.rb中添加自定义变形,因为它可能会在其他区域引起问题. (9认同)
  • @wasipeer:尝试`set_fixture_class my_table_name:MyModule :: MyClass` (3认同)
  • 我添加此行后面临相同的错误我的错误更改为ArgumentError:ArgumentError:String与类的比较失败 (2认同)