是否有任何rails工厂帮助我测试非持久性模型?

时间:2011-06-09 22:14:09

标签: ruby-on-rails ruby factory-bot machinist factories

我正在开发一个rails应用程序,在该应用程序上,模型是普通的ruby类,没有任何持久层(没有活动记录或类似的)。我想用RSpec测试这些模型,以及一些工厂提供的所有细节(机械师,工厂女孩)。这些模型可能在未来与持久模型建立关联,或者可能实现自定义持久模型。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我想使用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">