動作を専門とする他のいくつかのクラスのベースであるクラスがあります。
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
スーパークラスの基本的な機能をどのようにテストしますか?
工場の定義は次のように宣言できます。
FactoryGirl.define do
factory :task, class: 'Task' do
shop
currency
value 10
end
factory :counter_task, parent: :task, class: 'CounterTask' do
end
end
これで、独自のファクトリから分離され、継承されたクラスごとに同じ基本クラスをテストできます。