如何配置 Rails 以使用带有 RSpec 的模型中的子文件夹?

How to configure Rails to use subfolders in models with RSpec?

提问人:B Seven 提问时间:10/30/2023 更新时间:10/30/2023 访问量:33

问:

我在models文件夹内有子文件夹:

应用程序/模型/foos/bar.rb

自动加载路径在 application.rb 中配置:

module AppName
  class Application < Rails::Application
    config.load_defaults 7.0

    config.public_file_server.enabled = true

    config.autoload_paths += Dir[Rails.root.join('app', 'models', '**/')]

这在开发中工作正常,但在测试环境中则不行。

development.rb:

config.cache_classes = false
config.eager_load = false

测试.rb

config.cache_classes = false
config.eager_load = false

规格/模型/bar_spec.rb

describe Bar do
  ....

rspec引发 NameError: 未初始化的常量 Bar

如何在测试环境中自动加载模型?

轨道 7.0.8

Ruby-on-Rails rspec Ruby-on-Rails-7

评论

1赞 Dave Newton 10/30/2023
至少测试不应该遵循模型的目录层次结构吗?即使这不能使它起作用,它肯定不那么糟糕,试图弄清楚事情在哪里。
0赞 max 10/30/2023
你在这里做的事情毫无意义。使用 Zeitwerk,如果您嵌套在自动加载根目录下的文件夹中,它将自动激活模块,并且常量将加载为 .您不仅使代码更难找到,而且还引入了潜在的错误和混淆。只是不要男人。 guides.rubyonrails.org/autoloading_and_reloading_constants.htmlbar.rbFoos/Bar

答:

0赞 B Seven 10/30/2023 #1

哈哈,是.rspec文件。

需要

--require rails_helper