ho avuto una classe, che è la base di alcune altre classi che si specializza il comportamento:test semplice STI con factorygirl
class Task < ActiveRecord::Base
attr_accessible :type, :name, :command
validates_presence_of :type, :name, :command
# some methods I would like to test
end
La classe CounterTask eredita da Task
class CounterTask < Task
end
Questa tutte le opere bene fino a quando sto provando a testare la classe base, dal momento che deve avere un tipo.
FactoryGirl.define do
factory :task do
sequence(:name) { |n| "name_#{n}" }
sequence(:command) { |n| "command_#{n}" }
end
end
Come testare la funzionalità di base della superclasse?
Il test non deve essere scritto in modo da testarne la funzionalità piuttosto che l'implementazione? In questo caso ciò significherebbe che verificherai se 'CounterTask' ha gli attributi e altre cose che ottiene da' Task'. Se si modifica l'implementazione, ad esempio non si utilizza più STI. Il tuo test potrebbe ancora riuscire se il tuo 'CounterTask' mantiene lo stesso comportamento. – Arjan
Questo è un buon punto. Ho solo pensato di salvare alcune duplicazioni nel test se prima testavo la funzionalità di base e poi le classi figlio ... Forse questa potrebbe essere la soluzione al mio problema. – Mark