Effective Rubyを読んでいます(8)

tl;dr

「Effective Ruby」の項目37~42を読みました。

:arrow_down: 目次です。

  • 項目37 MiniTest仕様テストに慣れよう
  • 項目38 モックオブジェクトで決定論をシミュレートしよう
  • 項目39 効果的なテストを追求しよう
  • 項目40 Rubyドキュメントの扱い方を覚えよう
  • 項目41 irbの高度な機能を使えるようになろう
  • 項目42 Bundlerでgemの依存関係を管理しよう

知ったこと

ファズテストとプロパティテスト(項目39)

ファズテストとプロパティテストという用語を知りました。

:arrow_down: 表形式でまとめました。

法名 目的 やること
ファズテスト プログラムをクラッシュさせたり、想定外の例外を発見する 大量のランダムなデータをメソッドの引数へ与える
プロパティテスト コードが指定されたように振る舞うか検証する 大量のデータをメソッドの引数へ与える

irbに独自のコマンドを追加する方法(項目41)

irbに独自コマンドを追加するには、IRB::ExtendCommandBundleモジュールにメソッドを定義すれば良いことを知りました。 実装イメージとしては、下記の通りです。

module IRB::ExtendCommandBundle
  def time_j
    -- snip --
  end
end

time_jという独自コマンドを追加しています。pryに独自コマンドを追加したことはあったのですが、irbに追加したことがなかったため面白かったです。