HaskellでRSpec的なテストができるhspecを試してみた話

最近Haskellを書いてます。色々良くて、気がついたら本当に好きになってきた感があります。

さてRubyが母語の僕としてはどうしてもテスト事情が気になります。 今のところ、Haskellでは型をしっかり定義できていればある程度のテストは済んでいるという認識です。なにしろ型の制約が想像以上にリッチなので、コンパイルできればほぼ間違いなく全パス動作してくれます。

もちろんそれだけでは十分ではなくて、実際の演算が正しいかどうかは検査する必要があります。あといわゆるAcceptance Test的な粒度のテストも行いたいです。となると、書きなれたRSpecに似たものを探してしまいます。

御多分にもれずHaskellにもhspecというRSpecクローンがあったので、ちょっと試してみました。

コードの前に欠点を挙げておきます。

  • マッチャーが無い
  • setup/teardownが無い
  • IOをテストしようとするとHUnitのアサーションを使わないといけない

マッチャー。僕はマッチャーが好きなので悲しいです。まあ自前でいくらでも書けるんですが…。 setup/teardownについてはGitHubのIssueにも挙がっていました。bracketを使えばどうか、という話が出ています。僕もこれを使って、それ相当のことを実現しました。でもユーザーとしては、このあたりはライブラリでサポートして欲しいところです。 IOの中ではHUnit(HaskellのxUnit)になるのも悲しい。マッチャー的なものを実装してpull requestしろってことでしょうか。

サンプルコードです。太田莉菜さん昔大好きでした。

ところで僕がたまに行くお店に宮本りえさんが出没するらしいです。それを知って以来、行くの緊張してます。

This was posted 2 years ago. It has 2 notes.
  1. fujimuradaisuke posted this