データ駆動 + Test::Unit
大量のログデータの処理の前段階として、fluentプラグインで処理させるときのこと。
fluentプラグインのテストはTest::Unitで書くのが主流なようで、Test::Unitを書いている。 ただ、プラグインは大量のデータを処理するので、テストケースの量も多くなってしまう。
何かいい方法はないかと思っていたら、データ駆動でのテストが書ける機構が備わっているのがとても便利だと感じた。
- http://qiita.com/repeatedly/items/727b08599d87af7fa671
- http://www.clear-code.com/blog/2013/1/23.html
data( "case" => ["expected", "target test data"], ... ) test "it's a data driven test" |data| expected, target = data assert_equal(expected, SUT(target)) end
と test
メソッドを使ったDSL syntaxでもブロック引数に渡せるのでこのように書ける。
テストするデータ量が多いと、 each
を回すような書き方になって見通し悪くなるが、この書き方だととてもスマートに表現できる。
やるじゃん、Test::Unit。