Rails Developer Meetup 2019での発表資料です!可読性の高いテストコードを書くためのコツについて話しました

Rails Developer Meetup 2019での発表資料です!可読性の高いテストコードを書くためのコツについて話しました
僕が作った gem の中で、ダントツにダウンロード数が多い rake_shared_context という gem のバージョンを 0.2.1 に上げました。0.1.0 にバージョンアップしたときから8000ダウンロードくらいされてるみたいなんですが、その間何かあったんですかね…。 0.2.1 と 0.2.0 のバージョン間の違いは殆ど無くて、RSpec 3.0 のお作法に対応しただけです。ただ、RSpec 2.x 系との互換性も保っておきたいので、両方のバージョンでテストできる環境を整える必要がありました。 そこで appraisal というステキな gem を使います。この gem は、今回のような依存ライブラリのバージョンが複数ある場合のテスト環境を整えてくれます。詳細は README 見るとよくわかるのですが、テストしたいバージョンごとに Gemfile を作り、それを切り替えてテ
メモ発掘したので貼っておく。だれか良い案あったら教えてください>< 現状 下記のように戻り値と副作用でdescribeを分けて対処している。でもちょう見栄え悪い… describe '#register' do describe "戻り値" do subject { user.regisger } it '...' end describe "副作用" do subject do user.register user end it '...' end end 解決案 そもそもそういうメソッドを書かずに、副作用だけ、もしくは副作用無しで戻り値だけのメソッドで分けるのがよい? 追記 なんかこれだと自分以外の人に意味通じなさそうなのでサンプルコード修正しました。戻り値と副作用でsubjectが異なるのでわざわざ分けてる次第です。全部フラットに書いてもいいのですが it の中身が膨れるからあまりや
みなさん、 timecop 使ってますか?timecop は、テストで時間を扱う時に必須と言えるライブラリです。テスト中の時間を止めたり(Timecop.freeze)時間を移動させたり(Timecop.travel)できます。似たようなライブラリとして delorean があります。RailsCasts でも紹介されています。 さて、timecop の README には下記のようなコード例が書いてあります。 t = Time.local(2008, 9, 1, 10, 5, 0) Timecop.travel(t) 僕はこれまで上記のように書くしか方法が無いと思っていたのですが、今日下記のようにも書けることに気づきました。 Timecop.travel(2008, 9, 1, 10, 5, 0) また、ブロックを使うこともできます。 Timecop.travel(2008, 9, 1,
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く