RSpec.describe と describe
●解決したいこと
①と②は、どんな違いがあるのか。
また、どう使い分けるのか、疑問に思った。
require 'rails_helper' #binding.pry
RSpec.describe "外枠describe", type: :request do #####①
before do
end
describe "内側describe" do #####②
●仮説と検証
rspecコマンドでファイルを生成した場合、
①のdescribeはデフォルトで記述される。
おそらく、このファイルに必須な記述。
また、グループ名(""内)を書き換えても動作に影響はなし。
テスト実行結果が表示されるときに、
記述したグループ名が表示される。
対し、②は、なくても問題はない。
describeを1つしか記述しなくていい場合は、外側のグループ名を書き換えて使う。
2つ以上describeでグループ分けをするなら、
内側2のdescribeを使うといったところか。
だが、外側①のdescribeを2つ定義も可能・・・
●質問してわかったこと
決定的な違いがある。
①のdescribeを新しく記述すると、
beforeメソッド内の定義も新しくできる。
例えば、登録できるか?というテストなら
あらかじめ用意しておくインスタンスはbuild(new)。
だが、登録内容の修正なら、
あらかじめ用意しておくインスタンスはcreate。
テストごとに、準備するインスタンスが異なる場合は
①のdescribeでグループ分けをしないと
beforeで用意したいインスタンスにソゴが出てくる。
*質問して感じたこと*
これは自分で気づくべきだった。
考察の甘さを自覚した。
記法にばかり注意が向き、動作への考察がおろそか。
また、次のカリキュラムまで進めれば
意識しなくとも、違いがわかる演習があった。
新しい知識が出てくると、
細かいことが気になりだす。
実際、この違いの認識は必須だと思うが、
対処方法が非効率。
また、このやり方をするからこそ
たくさん疑問の検証が必要になり
最後らへんの検証は手が抜けがち。
こう書いてるけど、こっちでもいけるよね?とか、
細かい記法は
次のカリキュラムまで進めても
まだ疑問が解消していなかったら対処する方がよいと思った。
疑問をためすぎると、手を付けられなくなるし、
不明点が絡まりあうと、解けなくなる。
なので早期解決を意識していたが、
思考クオリティーの低下が顕著。
やり方に無理があるということだと、解釈して
少しやり方を変えてみてどうなるか。
ためす。