使用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的类测试相同的基类。