0

shoulda は非常に優れていると思いますが、次のようないくつかのマクロが存在する理由がわかりません。

  • should_validate_uniqueness_of :title
  • should_validate_presence_of :body, :message => /wtf/
  • should_validate_presence_of :title
  • should_validate_numericality_of :user_id

私はテストに比較的慣れていませんが、これらはどのような目的に役立ちますか? それらは、モデルで行われるのと同じ検証をほぼ正確に反映しています。validates_uniqueness_of :titleたとえば、モデルに入って書いてから、次のようなテストを書くことによって、正確に何を達成しますshould_validate_uniqueness_of :titleか?

4

3 に答える 3

1

これは、誰かがアプリの機能を壊した場合、テストが失敗するなど、完全な防御テスト カバレッジが必要な人向けです。

于 2010-03-29T16:41:24.613 に答える
1

私は を使用shouldaしたことがなく、作成者が何を考えていたのか正確にはわかりませんが、私は何年にもわたって多くの Ruby 単体テストを書いてきたので、推測してみましょう。

のように、プログラムの一部を純粋に宣言的に RoR で宣言できますvalidate_uniqueness_of。その他、実装するより洗練されたメソッドを記述します。クラスは通常、これらの両方の組み合わせで構成されます。後者は通常、前者よりも (時間とスペースの点で) 書き込みに時間がかかることに注意してください。

したがって、おそらく「TDD」に興奮しているために、クラスの設計をスケッチすることに興味がある場合は、クラスがサポートする必要があるすべてを宣言するテストを作成することができます: タイトルは一意であり、ユーザー ID はメルセンヌ素数です。 . これは素早く簡単に書くことができます。次に、クラスのコントラクトを知り、それを簡潔な形で見ることができるように、これらすべてのコードを書きます。

それはただの推測です。

于 2010-03-29T16:04:31.160 に答える
-1

これらは RSpec と ActiveRecord に固有のマクロです。

そうです、Shoulda は実際に RSpec で遊んでいます。

http://robots.thoughtbot.com/post/159805987/speculating-with-shoulda

于 2010-03-29T16:10:50.397 に答える