view specつらい
viewのテストはcapybaraで済ませていたのだけど大きな問題が発覚。
テストが遅い。
スロースペックを見てみると、request specが上位独占。裏でブラウザが起動してぽちぽちやっているのでまあ無理もないって感じ。
そこでview specを書いてみた。
veiw specが通るまでの苦労
・spec実行して、エラーになる箇所をスタブへ
・どうでもいいpartialもスタブへ。
・nilぽでたらとりあえずスタブ
・ARインスタンスにactive_decoratorのメソッドをdecorateできたけど、decoratorの中からnamed routeが見えなくて結局モックに逃走。
よくつかったコード
view.content_for(:page_title) { "page_title" } stub_template("layouts/_submenu.html.erb" => "") word = mock_model(Word, id: 1, name: name, image: nil ) word.stub!(:draft_state_if).and_return(nil) assign(:word, word)
まとめ
view specはcontrollerやmodelのspecと違ってトライ&エラーが多くてspec書くのに時間がかかる。
でも実行時間はすごく早い。表示だけのテストをrequest specでやっている場所があるならviewで書き直すべき。適材適所。