2017-06-21 3 views
0

私たちは現在、主に私たちのレールモデルの仕様機能に、ヒントボッブshoulda gemを使用しています。shouldaを使用しますか?

実際には、のレール動作をテストしているはずのマッチャの多くが現れているようです。例えば。

describe Blog do 
    it { should have_many(:posts) } 
end 

はちょうどモデル定義

class Blog < ActiveRecord::Base 
    has_many :posts 
end 

から、このコードは実際に動作することをテストします。

このテストではありませんレールの動作(私たちのモデルの動作とは対照的に)? これは一般的に回避するものではありませんか?

+0

画像の 'posts'はあなたのアプリのどこかで使用され、誰かが' has_many:posts'を取り除いてテストしないと、アプリがクラッシュするまで問題がないことがわかります。 – Thanh

答えて

0

この種の質問は簡単に炎戦に派生することができますが、とにかく、私は2セントを与えます。

私はほとんどの時間にマッサージを使用していますが、私はこの種のテストが最初は余計に見えるかもしれないとあなたに同意します。ではなぜ私はそれらを使い続けていますか?

BDDを実行しているときは、単一​​のユニットをテストしていませんが、実際にはオブジェクトの動作をテストしています。。私の視点では、Blogエンティティがpostsメソッドに多くのpostsのコレクションで応答することがわかっているので、Blogクラスの動作の一部です。だから私はそれをテストしたい。あなたは厳密にTDDのサイクルに従っている場合

また、あなたは理論的には、あなたが最初にテストを書くべきという原則に違反することなく

has_many :posts 

行を追加することはできません。

他の多くの分野と同様に、決定的な回答はプロジェクトによって異なります。多くのモデル(またはそのように成長しているプロジェクト)を持つ大きなプロジェクトがある場合は、本当にインターフェイスをテストしたいことがあります。

AuthorPostモデルをお持ちの場合は、過度のように見える場合があります。しかし、この場合、4行のテストのようなものが必要になるでしょう...なぜそうではありませんか?

関連する問題