Sooey

2014-05-28 16:33:56 +0900

RSpec 3.0でのコレクションに対するマッチャーの使い分けメモ。

コレクションに値が含まれることの検証:

expect([a, b, c]).to include(a, b)  # Success
expect([a, b, c]).to include(d)     # Failure

コレクションの要素が完全に一致することの検証:

expect([a, b, c]).to contain_exactly(c, b, a)  # Success
expect([a, b, c]).to contain_exactly(c, b)     # Failure

コレクションの要素と順序が完全に一致することの検証:

expect([a, b, c]).to match([a, b, c])  # Success
expect([a, b, c]).to match([a, c, b])  # Failure

2014-05-28 13:43:27 +0900

ActiveSupportのKernel#captureKernel#silence

ActiveSupportにはKernel#captureというメソッドとそのエイリアスであるsilenceが定義されていて、以下のようにストリームへの出力を横取りできる。

stream = capture(:stdout) { puts 'notice' }
stream # => "notice\n"

silence(:stderr) { ... }

これまでは標準出力などに出力を行うクラスをテストする際に、このメソッドで出力を抑止していたが、RSpec 3.0からはoutputマッチャーを使うと、同様のことが以下のように記述できる。

expect { puts 'notice' }.to output("notice\n").to_stdout

今後は、出力内容をテストしたい場合はoutputマッチャーを使い、単に出力を抑止したい場合はKernel#silenceという使い分けになりそう。

2014-05-23 20:30:36 +0900

履歴書に求めること。

  • 興味のあること
  • 得意なこと
  • なぜそれが得意なのか