使用FactoryGirl测试简单的STI

我有一个类,这是其他一些专门处理行为的类的基础:

class Task < ActiveRecord::Base attr_accessible :type, :name, :command validates_presence_of :type, :name, :command # some methods I would like to test end 

CounterTask类inheritance自Task

 class CounterTask < Task end 

这一切都正常,直到我尝试测试基类,因为它必须有一个类型。

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

您如何测试超类的基本function?

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

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

现在,您可以测试从其自己的工厂隔离的基类,并为每个inheritance的类测试相同的基类。