あなたの質問はいくつかの意見を求めるものですが、いくつかの例で私の意見を正当化しようとします.
短い答え: いいえ、これは RSpec (または任意のテスト) の記述方法ではありません。これは型にはまらず、余分なコードにあまり価値がありません。
長い答え: RSpec は BDD (動作駆動型開発) ツールであり、自動化されたテストを作成すると同時に、コードの動作と意図を記述するのに役立つように設計されています。コードの動作について考えるとき、期待される結果をテスト記述に追加することは本当に価値があるでしょうか? もしそうなら、おそらくあなたがテストしているものを再考する必要があります.
たとえば、User クラスがあり、ユーザーの姓名を連結するメソッドをテストするとします。
describe User do
expected_full_name = 'Software Guy'
subject { User.new(first: 'Software', last: 'Guy') }
it 'should have the full name #{expected_full_name}' do
subject.full_name.should == 'Software Guy'
end
end
VS
describe User do
subject { User.new(first: 'Software', last: 'Guy') }
it 'should have a full name based on the first and last names' do
subject.full_name.should == 'Software Guy'
end
end
最初のテストでは、期待される結果が説明に含まれていて、本当に得をするものは何ですか? ユーザーの予想される行動について何かを教えてくれますか? あまり。
あなたの例を見てください。私があなたのプロジェクトに来て、そのようなテストの説明を見たら、何がテストされているかを実際に教えてくれないので、混乱するでしょう. 何が起こっているのかを理解するには、コードを確認する必要があります。次の 2 つの例を比較してください。
it "displays the #{expected_page_title} page title" do
view.content_for(:page_title).should have_content(expected_page_title)
end
コンソールに次のようなものが表示されます。
"My Awesome Title ページのタイトルを表示します"
それを比較してください:
it "should translate the page title" do
view.content_for(:page_title).should have_content(expected_page_title)
end
これは、コンソールでもテストとまったく同じです。
「ページのタイトルを翻訳する必要があります」
どちらを選択するかは明らかに自由ですが、数年間のテスト経験から言えば、これを行わないことを強くお勧めします。