一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

Rails Developers Meetup 2018 Day3 Extremeで登壇しました

Rails Developers Meetup 2018 Day3 Extremeで登壇しました。 speakerdeck.com 正直、クオリティに納得いってないんですが公開。 どうしても付録Cと被ってしまう内容だったのと、TDDから初めてRSpecまでやろうと思ったら20分では無理でした。

とはいえ、Rails歴5年以上の人が6割超えのRailsdmなのに刺さった人が結構いて、定期的な啓蒙活動に意味がある分野なのではと思った。

RailsでCustom FormBuilderのテストってみんなどう書いているんだろう

RailsでFormBuilderを独自拡張した場合のSpecってあまり言及されていないよなと思う。

例えば、こんな感じで独自FormBuilderを書いたとする。

app/forms/application_form_builder.rb

するとSpecはこんな感じかなあと思っているのだけど・・・。

spec/forms/application_form_builder_spec.rb

なんかしっくりこない。 ActionView::Helpers::FormBuilderのコミットログを見ると、initializeメソッドの引数が変更になることもあるので、form_forを呼んでから書くというのがいいかなとか考えてる。 コードとしてはこんな感じ。 form_forから書いた方がClassを直で呼ぶより保守性が高いかな?

参考URL

RSpecでshouldからexpectへ移行する時に困ったこと

RSpecのExpectationsでshouldが非推奨となり、expectが推奨になったわけですが、expectで書くかと思った時に困ることがあった。例えば、

subject { User.new }
its(:login_id) { should be_nil }

のようなコードを書きたくてもshouldが無いと書けないのでは?と思ってたわけです。
これが書けないってなるとまだshouldで様子見かと判断していたのですが、
実はこのケースについてはconfigでshouldをdisabledにしてもサポートされていました
ちょっと安心。shouldを使える場所はshouldを使い続けて、書かざるを得ない部分だけexpectを使えばもしshould継続!って展開になっても対応は最小限で済むはず。
しかし、shouldが使えないとなるとコードをパッと見て「expectを使っているところは更新処理」だと判断しにくくなる点が不満ではあるなぁ。