0

私はこのように楽しくshouldaを使用しています:

context "test world" do
  setup do
   @world = ...
  end

  should "be spinning" do
   assert_equal "spinning", @world.movement
  end

  ... and so on
end

このバリエーションを理解するためのヒントが必要です。

class PostTest < Test::Unit::TestCase
   should belong_to(:user)
   should have_many(:tags).through(:taggings)

   should validate_uniqueness_of(:title)
   should validate_presence_of(:body).with_message(/wtf/)
   should validate_presence_of(:title)
   should validate_numericality_of(:user_id)
 end

私にはわかりませんが、さまざまな「belong_to(:user)」などが何を操作しているのかがわかりません。言い換えれば、それらがPostのインスタンスで動作していることはかなり明らかですが、それを決定しているのは何ですか?'should xxx'行の主題は何ですか?

私はこれが初心者の質問であることを知っているので、どんなポインタも素晴らしいでしょう!

4

1 に答える 1

2

shouldaは、特定の種類のテストをより簡潔にするために、ブロックの代わりに使用できる1行のアサーションの数を定義します。これらは、ActiveRecordモデルに関する特定のアサーションです。

これらのアサーションの主題がPostオブジェクトであることは正しいです。これは、テストクラスの名前から決定されます。それをフォローしたい場合は、ソースを見てください:

https://github.com/thoughtbot/shoulda/blob/master/lib/shoulda/context.rb

このconstruct_subjectメソッドは、Testサフィックスを取り除き、結果のクラス名をインスタンス化します。また、Active Recordの特定の単一行アサーションについて知りたい場合は、ActiveRecordマッチャーを確認してください。

https://github.com/thoughtbot/shoulda/tree/master/lib/shoulda/active_record/matchers

于 2010-12-28T20:30:04.047 に答える