見出し画像

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で用意したいインスタンスにソゴが出てくる。

*質問して感じたこと*

これは自分で気づくべきだった。
考察の甘さを自覚した。
記法にばかり注意が向き、動作への考察がおろそか。

また、次のカリキュラムまで進めれば
意識しなくとも、違いがわかる演習があった。

新しい知識が出てくると、
細かいことが気になりだす。

実際、この違いの認識は必須だと思うが、
対処方法が非効率。

また、このやり方をするからこそ
たくさん疑問の検証が必要になり
最後らへんの検証は手が抜けがち。

こう書いてるけど、こっちでもいけるよね?とか、
細かい記法は
次のカリキュラムまで進めても
まだ疑問が解消していなかったら対処する方がよいと思った。

疑問をためすぎると、手を付けられなくなるし、
不明点が絡まりあうと、解けなくなる。

なので早期解決を意識していたが、
思考クオリティーの低下が顕著。

やり方に無理があるということだと、解釈して
少しやり方を変えてみてどうなるか。
ためす。