我正在开发一个 Rails 应用程序,其模型是普通的 ruby 类,没有任何持久层(没有活动记录或类似的)。我想用一些工厂提供的所有细节(机械师、工厂女孩)来测试来自 RSpec 的这些模型。这些模型将来可能会与持久模型相关联,或者可能实现自定义持久模型。
有什么建议么?
我正在开发一个 Rails 应用程序,其模型是普通的 ruby 类,没有任何持久层(没有活动记录或类似的)。我想用一些工厂提供的所有细节(机械师、工厂女孩)来测试来自 RSpec 的这些模型。这些模型将来可能会与持久模型相关联,或者可能实现自定义持久模型。
有什么建议么?
我喜欢使用Sham gem。只要你有一个符合一些基本实现细节的非持久模型,你应该没问题。例如,在我的 Rails 应用程序中,我会执行以下操作:
# sham/dog_sham.rb
class Dog::Sham
def self.options
{ name: "Barney" }
end
end
# app/models/dog.rb
class Dog < Struct.new(:name)
def self.create options
self.new(options[:name])
end
end
然后在控制台中,我可以使用 sham 命令创建一个工厂 Dog:
Sham::Config.activate!
Dog.sham!
=> #<struct Dog name="Barney">