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