3

私は、モデルが永続層のないプレーンなルビークラスであるレールアプリケーションに取り組んでいます(アクティブなレコードなどはありません)。RSpec のこれらのモデルを、いくつかの工場 (機械工、工場ガール) が提供するすべての優れた点でテストしたいと考えています。これらのモデルは、将来永続モデルと関連付けられるか、カスタム永続モデルを実装する可能性があります。

助言がありますか?

4

1 に答える 1

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">
于 2011-06-09T23:08:21.473 に答える