Mam klasy, który jest podstawą niektórych innych klas, które specjalizuje się zachowanie:Testowanie prosty STI z FactoryGirl
class Task < ActiveRecord::Base
attr_accessible :type, :name, :command
validates_presence_of :type, :name, :command
# some methods I would like to test
end
Klasa CounterTask dziedziczy Zadanie
class CounterTask < Task
end
To wszystko działa dobrze dopóki próbuję przetestować klasę podstawową, ponieważ musi ona mieć typ.
FactoryGirl.define do
factory :task do
sequence(:name) { |n| "name_#{n}" }
sequence(:command) { |n| "command_#{n}" }
end
end
Jak można sprawdzić podstawową funkcjonalność nadklasy?
Czy test nie powinien zostać napisany tak, aby testował funkcjonalność, a nie implementację? W tym przypadku oznaczałoby to, że testowałbyś, czy 'CounterTask' ma atrybuty i inne rzeczy, które otrzymuje z' Task'. Jeśli zmienisz swoją implementację, na przykład nie używając już STI. Twój test może się powieść, jeśli twoje "CounterTask" zachowuje to samo zachowanie. – Arjan
To jest dobra uwaga. Pomyślałem, że zachowam niektóre duplikaty w teście, jeśli najpierw przetestuję podstawową funkcjonalność, a potem klasy potomne ... Być może to może być rozwiązanie mojego problemu. – Mark