SCENARIUSZ ja wybiłem dotyczą nazywa Taggable
. Jest to moduł, który pozwala każdemu modelowi obsługiwać tagowanie. Uwzględniłem ten problem/moduł w modelach takich jak User
, Location
, Places
, Projects
.Testowanie problemem/moduł, który używa ActiveRecord
Chcę napisać testy dla tego modułu, ale nie wiem od czego zacząć.
PYTANIE
1. Czy mogę zrobić test Izolacja na Taggable
niepokoju?
W poniższym przykładzie test nie powiedzie się, ponieważ test szuka numeru dummy_class table
. Zakładam, że robi to z powodu kodu has_many
w Taggable
, więc oczekuje, że 'DummyClass'
będzie obiektem 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
Część mnie myśli, jeśli tylko przetestować model, który ma tego modułu zawarte w jej wnętrzu jak User
To wystarczy testu. Ale wciąż czytam, że należy testować moduły w izolacji.
Szukasz wskazówek/strategii dotyczących właściwego podejścia.
Używasz '@ dummy_class', a następnie używasz' @ dummy'. Myślę, że to nieumyślne. – RubeOnRails