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

查看Factory Girl 文档以获取更多信息。

于 2013-02-06T14:58:36.603 回答