情景 我已經提取的關注稱爲Taggable
。這是一個允許任何模型支持標記的模塊。我已將此關注/模塊納入User
,Location
,Places
,Projects
等模型中。測試關注/模塊使用的ActiveRecord
我想寫這個模塊的測試,但不知道從哪裏開始。
問題
1.我可以做的Taggable
關注隔離測試?
在下面的示例中,測試失敗,因爲測試正在查找dummy_class table
。我假設它是這樣做的,因爲Taggable
中的has_many
代碼,因此它預計'DummyClass'
是一個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
部分認爲如果我只是測試了該模塊包括它裏面像User
這足夠測試的模型。但我一直在讀,你應該單獨測試模塊。
尋找正確方法的一些指導/策略。
您使用'@ dummy_class',然後使用'@ dummy'。我認爲這是無意的。 – RubeOnRails 2013-09-16 20:16:07