Подтвердить что ты не робот

Тестирование простого ИППП с помощью FactoryGirl

У меня есть класс, который является базой некоторых других классов, которые специализируются на поведении:

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

Как бы вы протестировали основные функции суперкласса?

4b9b3361

Ответ 1

Вы можете объявить определения фабрик следующим образом:

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

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

И теперь вы можете протестировать базовый класс, изолированный от его собственного factory и тот же для каждого унаследованного класса.