1

ActiveRecord::Baseを継承したクラスでrubyプロジェクトを作成しています。データベースを使用せずに、次のコード サンプルの rspec テストと簡単なカバレッジを作成するにはどうすればよいですか。

class Person < ActiveRecord::Base
    validates_length_of :name, within: 10..40
end
person = Person.create(:name => "aungaung")
person.save
4

2 に答える 2

1

データベースに触れたくない場合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に保存する必要があります。

于 2013-08-27T03:52:57.800 に答える