ActiveRecord::Baseを継承したクラスでrubyプロジェクトを作成しています。データベースを使用せずに、次のコード サンプルの rspec テストと簡単なカバレッジを作成するにはどうすればよいですか。
class Person < ActiveRecord::Base
validates_length_of :name, within: 10..40
end
person = Person.create(:name => "aungaung")
person.save
データベースに触れたくない場合FactoryGirl.build_stubbed
は、あなたの友達です。
> person = FactoryGirl.build_stubbed :person
> person.save!
> #=> person obj
> Person.all
> #=> [] # Not saved in db
したがって、検証をテストするには
it "validates name at length" do
person = FactoryGirl.build_stubbed :person, name: "aungaung"
expect{person.save!}.to raise_error(ActiveRecord::RecordInvalid)
end
build_stubbed は、モデルの単体テストに適していることに注意してください。UI関連では、このメソッドを使用できず、実際にdbに保存する必要があります。