在 rspec 测试中只需要 ActiveModel::Validations

Kei*_*son 2 tdd rspec ruby-on-rails activemodel

我有一个我正在尝试测试的课程,其中包括ActiveModel::Validations

module SomeModule
  class SomeClass
    include ActiveModel::Validations
  end
end
Run Code Online (Sandbox Code Playgroud)

我试图在不spec_helper保持快速的情况下测试它,但require 'activemodel'规范顶部的简单方法不起作用。我不断收到一个uninitialized constant SomeModule::SomeClass::ActiveModel(NameError). 对于规格文件:

require 'activemodel'

describe SomeModule::SomeClass do

end
Run Code Online (Sandbox Code Playgroud)

有什么解决这个问题的建议吗?提前致谢!

Sam*_*Sam 5

您需要包含active_model在您的模块/类文件中。

# /some_class.rb

require 'active_model'

module SomeModule
  class SomeClass
    include ActiveModel::Validations
  end
end
Run Code Online (Sandbox Code Playgroud)

规格,

# /some_class_spec.rb

require './some_class'

describe SomeModule::SomeClass do

end
Run Code Online (Sandbox Code Playgroud)

您需要更改路径以匹配您的文件。我怀疑当与包含整个 Rails 堆栈的其他规范一起运行时,这会加快您的规范,但是当单独运行时,这会更快一些。