この質問はRSpecサンプルグループと英語の例をどのようにして最適な名前にするかについてです。WebappsのRSpecサンプルグループの命名
は、私は(functionally equivalentある)とit
RSpecの、describe
、context
であなたに完全な文を与えることになっていることを理解しています。たとえば、
describe "Log-in controller" do
context "with logged-in user" do
it "redirects to root" do
...
end
end
end
読み込みLog-in controller with logged-in user redirects to root
です。驚くばかり。
しかし、私は(カピバラを使用して)ajaxyページ上のすべてのコンポーネントをテストする必要があります私のアプリケーションで、私はこのような例のグループを持っている傾向がある:
describe "blog post" do
describe "content" do
it "is displayed"
end
describe "comment" do
it "is displayed"
describe "editing" do
it "works" # successful comment editing
it "requires logged-in user" # error case 1
it "requires non-empty body" # error case 2
end
end
describe "comment form" do
it "works" # successful comment submission
it "requires valid email address" # error case 1
it "requires non-empty body" # error case 2
end
end
私はここ2アンチパターンを参照してください。
ネストされた説明は、文章として読み込まれません。もちろん、誰かが "blog post:"の後にコロンを置くこともできます:
describe "blog post" do describe "'s content" do it "is displayed" end end
または理想的に、私は
describe "blog post" do its "content" do it "is displayed" end end
を書くだろうが、
its
は属性アクセスについてです、と私はちょうどここに文字列を持っているので、それは不可能です。「ページコンポーネント」の問題を処理するには、より良い方法がありますか?
機能のために、成功したケース(コメント提出のような機能)は、単に
it "works"
とマークされています。少なくとも簡潔でシンプルです -it "can be submitted and causes a comment to be added"
よりやや好ましいと思います。それは明らかに何かのために言葉遣いを構成するためです。しかし、これを行うにはより良い、より自然な方法がありますか?
上記のexample-group;を再構成する方法についての提案を参照してください。
興味深いことに面白い!私は、あなたの例を分かち合って「うまくいっている」と確信しているのかどうか分からないのですが、「提出可能」は本当に面白いテストではありません(ボタンが必要です)。 "、"新しいコメントは正しい著者を持っています "などは、通常、コードを複製して性能を失うことによって分割可能です(*本当に* Seleniumにとって痛い)。成功したケースでは、私は通常、KISSを適用し、機能性を発揮して、私が気にしていることに対して束の間の期待をしています。私は実際にそれらを分割することによって私のスペックの保守性が上がるのを見ない。 –
私の擬似コードはガイドとしてのみ意味します。 「提出する必要があります」は分割してどのように提出してコメントを作成するかの例に過ぎません。私の要点は、各テストごとに異なるテスト条件が必要だということです。説明に 'と'を追加すると、分割が必要になります。あなたがSileniumでテストしているなら、私は100%カバレッジに行くことをお勧めしません。おそらく、まずモデルとコントローラのテストで同等のレベルのカバレッジを達成することができます。パフォーマンスと重複が心配な場合は、これらの問題を回避する背景条件を作成してください。 –
私のテストを分割するとメンテナンスが容易になるとは思えません。 「コメントを投稿すると、JSから動的に追加されていることを確認し、正しい著者がいることを確認し、日付があることをチェックし、編集可能かどうかをチェックし、ページの再読み込み後もページにチェックします」あなたは実際にそれをいくつかのテストに分割することを主張します(簡潔な期待値列を持つのではなく)? Btw、「背景条件」はどういう意味ですか? ':speed =>:slow'な種類のメタデータ? –