2

私は Rails とテストにまったく慣れていないので、次のモデルを作成しました。

class KeyPerformanceInd < ActiveRecord::Base
  #attr_accessible :name, :organization_id, :target

  include ActiveModel::ForbiddenAttributesProtection

  belongs_to :organization
  has_many  :key_performance_intervals, :foreign_key => 'kpi_id'

  validates :name, presence: true
  validates :target, presence: true
  validates :organization_id, presence: true

end

私の質問は、そのようなモデルに対するものです。私が作成すべき RSpec テストは何ですか? こんなもの?それとも萌えることある?FactoryGirlについて聞いたことがありますが、それはこのモデルをテストするために必要なものですか、それともコントローラー内のものをテストするためのものですか?

Describe KeyPerformanceInd do
  it {should belong_to(:key_performance_interval)}
end 
4

1 に答える 1

7

この場合、これ以上行う必要はありません。また、shoulda-matchers gemを使用して、コードを本当にクリーンにすることもできます。

it { should belong_to(:organization) }
it { should have_many(:key_performance_intervals) }

it { should validate_presence_of(:name) }
it { should validate_presence_of(:target) }
it { should validate_presence_of(:organization_id) }

そして、これはそれです。

FactoryGirlこの場合、有効で再利用可能なオブジェクトを作成するために使用される必要はありません。ただし、モデルテストでファクトリを使用することはできます。簡単な例:

あなたの工場:

FactoryGirl.define do
  factory :user do
    first_name "John"
    last_name  "Doe"
  end
end

あなたのテスト:

it "should be valid with valid attributes" do  
  user = FactoryGirl.create(:user)
  user.should be_valid
end

詳細については、 FactoryGirlのドキュメントを確認してください。

于 2013-02-06T14:58:36.603 に答える