シナリオという懸念事項
を抽出しましたTaggable。これは、どのモデルでもタグ付けをサポートできるようにするモジュールです。Userこの懸念/モジュールを、Location、Places、 のようなモデルに含めましProjectsた。
このモジュールのテストを書きたいのですが、どこから始めればよいかわかりません。
質問
1. 問題に対して分離テストを行うことはできますTaggableか?
以下の例では、テストが を探しているため、テストは失敗しますdummy_class table。has_manyコードが原因でこれを行っていると想定しているためTaggable、結果として'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だけで十分なテストだと思います。しかし、モジュールを分離してテストする必要があることを読み続けています。
正しいアプローチとは何かについてのガイダンス/戦略を探しています。