22

Shoulda を使用して、属している関係を簡単にテストできることを知っています。

describe Dog dog
  it { should belong_to(:owner) }
end

Shoulda を使用して、より複雑な belongs_to 関係をテストすることは可能ですか? このようなもの:

class Dog < ActiveRecord::Base
  belongs_to :owner, :class_name => "Person", :foreign_key => "person_id"
end
4

5 に答える 5

26

以下を使用できるはずです。

it { should belong_to(:owner).class_name('Person') }

Shoulda のbelong_toマッチャーは常にforeign_key関連付けから を読み取り、それが有効なフィールド名であることをテストするため、それ以上の操作は必要ありません。

(Shoulda::Matchers::ActiveRecord::AssociationMatcher#foreign_key_exists?および関連するメソッドを参照)

于 2012-09-02T09:09:50.957 に答える
14

カスタム外部キーをテストできるようになりました:

it { should belong_to(:owner).class_name('Person').with_foreign_key('person_id') }

参照: https://github.com/thoughtbot/shoulda-matchers/blob/master/lib/shoulda/matchers/active_record/association_matcher.rb#L122

于 2013-08-28T07:44:12.673 に答える
2

したがって、should-matchersのREADME は、いくつかの例を示しているだけで、詳細についてはかなり簡単です。association_matcher.rbbelongs_toを見ると、クラスの RDoc にさらに多くの情報があることがわかりました。最初の方法は、Rdoc を使用した belongs_to です。

  # Ensure that the belongs_to relationship exists.
  #
  # Options:
  # * <tt>:class_name</tt> - tests that the association makes use of the class_name option.
  # * <tt>:validate</tt> - tests that the association makes use of the validate
  # option.
  #
  # Example:
  #   it { should belong_to(:parent) }
  #
  def belong_to(name)

したがって、とbelongs_toのテストのみをサポートします。:class_name:validate

于 2012-09-02T08:58:49.823 に答える