31

我有一个类,它是其他一些专门从事该行为的类的基础:

class Task < ActiveRecord::Base
  attr_accessible :type, :name, :command
  validates_presence_of :type, :name, :command

  # some methods I would like to test

end

CounterTask 类继承自 Task

class CounterTask < Task 
end

在我尝试测试基类之前,这一切都很好,因为它必须有一个类型。

FactoryGirl.define do
  factory :task do
    sequence(:name) { |n| "name_#{n}" }
    sequence(:command) { |n|  "command_#{n}" }
  end
end

您将如何测试超类的基本功能?

4

1 回答 1

70

您可以声明工厂的定义如下:

FactoryGirl.define do
  factory :task, class: 'Task' do
    shop
    currency
    value 10
  end

  factory :counter_task, parent: :task, class: 'CounterTask' do
  end
end

现在您可以测试与其自己的工厂隔离的基类,并且对于每个继承的类都相同。

于 2013-11-20T16:15:50.580 回答