興味深い質問です。私ももっと知りたいことがあります....だから少し掘り下げて、ここに私が発見したものがあります:
let
などについてのソートボット スタイル ガイド口述。
スタイル ガイドの以前のバージョンでは、そのステートメントにはさらに多くの説明があります。
its、let、let!、specify、subject、およびその他の DSL は避けてください。明確さと一貫性を優先します。
ソートボットの人々が let name let's notに投稿しました。Github Commit Comment の会話へのリンクも参照してください。
最近のポッドキャストの 1 つで、 ThoughtBot の CTO であるJoe Ferrislet
は、なぜandを使用するのが得策ではないのかを説明していますsubject
。27分 37 秒から 5 分間、 「 Something Else Was Smellier」というタイトルのポッドキャストをチェックしてください。
アンチパターン「ミステリー ゲスト」をテストすることは、 ThoughtBot の古いブログ投稿で詳細に説明されており、使用しない主な理由let
とその従兄弟です。
上記のすべてについての私の理解を非常に簡潔に要約すると、
et al を使用let
すると、テスト内で何が起こっているのかを一目で理解することが難しくなり、接続を作成するのに時間を費やす必要があります。
多くの労力をかけずに理解しやすいようにテストを記述します。
さらに、let
テストで自由に使用すると、テスト間で過度に共有されるだけでなく、暗黙的common fixtures
になります。つまり、適用されない場合でも、記述されているすべてのテストに対して開始する共通のフィクスチャがあります。
前(:すべて)
使用に反対する議論before(:all)
は単純明快です。古いrspecドキュメントで説明されているように:
警告: before(:all) および after(:all) の使用は、サンプル間に依存関係が生じるため、一般的に推奨されません。それでも、自分が何をしているのかを知っていれば、非常にコストのかかる操作に役立つかもしれません。
before(:all) は、ExampleGroup の開始時に 1 回だけ実行されます。そのため、サンプル間に依存関係が誤って導入される可能性があります。テストが理解しにくいというソートボットの主張は、これにも当てはまります。
結論として、より良い仕様を書くためのアドバイスは次のようです。
- 一目で理解できるようにテストを記述します。
- あなたが何をしているのかを知ってください。