Ruby on rails 由于未测试的类初始值设定项中的检查失败,Rspec崩溃。这是因为Rails自动加载类吗?

Ruby on rails 由于未测试的类初始值设定项中的检查失败,Rspec崩溃。这是因为Rails自动加载类吗?,ruby-on-rails,ruby,ruby-on-rails-3,rspec,Ruby On Rails,Ruby,Ruby On Rails 3,Rspec,我的Rails应用程序中有一个服务对象,如果未正确配置,它将引发ConfigurationError: module Import class ImportedObject ... def initialize(*args) raise ConfigurationError unless Import.configured? super end ... end end 在开发过程中,一切正常。但是,运行rspec会立即失败,

我的Rails应用程序中有一个服务对象,如果未正确配置,它将引发
ConfigurationError

module Import
  class ImportedObject
    ...

    def initialize(*args)
      raise ConfigurationError unless Import.configured?
      super
    end

    ...

  end
end
在开发过程中,一切正常。但是,运行rspec会立即失败,
../app/services/import/import\u对象。rb:16:在“初始化”中:导入应配置为“import.configure\u for company,origin”(import::ConfigurationError)
,即使没有任何规范涉及任何导入类(尚未;)

这是由Rails自动加载(显然是初始化?)除开发之外的所有环境中的所有类引起的吗


如何正确加载此类并在配置丢失时仍能引发异常?

在运行任何测试之前,rspec准备好环境-这意味着它执行application.rb、environment.rb和所有初始值设定项。您是否在那里初始化导入?

因此我发现,这个问题似乎不是由Rails或rspec引起的

我用它来定义
ImportObject
及其子类中的属性

我还在扩展ImportObject的DSL模块中定义了一个由方法组成的
,它用于几个子类:

# DSL for composition
def composed_of(klass, attribute_name, options = {})
  ...      
  # Set an attribute that  contains the proxied class and delegate methods defined in constant
  attribute attribute_name, klass, default: klass.new 
  ...
end

klass.new
是导致异常的原因,将异常放入proc可以解决此问题。我猜rspec初始化时会对由
组成的进行评估。

否,我没有在您提到的某个文件中明确初始化ImportObject或任何其他与导入相关的模块或类
ImportObject
从不直接初始化,因为它充当其他特定导入对象类型的超类,例如
ImportedInvoice
ImportedDebtor
等。为指针干杯!