SCENARIO ho estratto un preoccupazione chiamato Taggable
. È un modulo che consente a qualsiasi modello di supportare il tagging. Ho incluso questo problema/modulo in modelli come User
, Location
, Places
, Projects
.sperimentazione di un modulo preoccupazione/che utilizza ActiveRecord
Voglio scrivere test per questo modulo, ma non so da dove iniziare.
DOMANDA
1. Posso fare dei test di isolamento sul Taggable
preoccupazione?
Nell'esempio seguente il test non riesce perché il test sta cercando un dummy_class table
. Presumo che stia facendo questo a causa del codice has_many
in Taggable
quindi, come risultato, si aspetta che 'DummyClass'
sia un oggetto ActiveRecord.
# /app/models/concerns/taggable.rb
module Taggable
extend ActiveSupport::Concern
included do
has_many :taggings, :as => :taggable, :dependent=> :destroy
has_many :tags, :through => :taggings
end
def tag(name)
name.strip!
tag = Tag.find_or_create_by_name(name)
self.taggings.find_or_create_by_tag_id(tag.id)
end
end
# /test/models/concerns/taggable_test.rb
require 'test_helpers'
class DummyClass
end
describe Taggable do
before do
@dummy = DummyClass.new
@dummy.extend(Taggable)
end
it "gets all tags" do
@dummy.tag("dummy tag")
@dummy.tags.must_be_instance_of Array
end
end
parte di me pensa se ho appena prova un modello che ha questo modulo incluso all'interno di esso come User
che è abbastanza di un test. Ma continuo a leggere che dovresti testare i moduli in isolamento.
Alla ricerca di una guida/strategia su quale sia l'approccio giusto.
Si utilizza '@ dummy_class', e quindi si usa' @ dummy'. Penso che non sia intenzionale. – RubeOnRails