generated at
hspec
Haskellのテストのためのライブラリ



マッチャー一覧 ref
shouldBe shouldNotReturn など




install
package.yaml のtestの項目に hspec を追加する

run
$ stack test
$ stack test --file-watch

ディレクトリ構成など
exampleを参考にすれば良い
素直にこれに倣わないとだるい感じになる
テストされるmodule側
app ではなく、 src 配下におく
テスト関係
Spec.hs
以下の1行のみを書く
test/Spec.hs
{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
HogeSpec.hs
src配下と全く同じ構造下に、この命名規則のファイルを置く
test/Hoge/HogeSpec.hs
module Hoge.HogeSpec (spec) where import Test.HSpec spec :: Spec spec = undefined -- ルートとなる関数
.cabal を書き換える
おそらく自動でやってくれるが一応メモ
hoge.cabal
test-suite comp-test type: exitcode-stdio-1.0 main-is: Spec.hs other-modules: HogeSpec -- ← ここに追加する


ファイル名をちゃんと付けるとModuleとテストファイルを結びつけてテストをしてくれる
src/Hoge.hs に対して、 test/HogeSpec.hs と名付ける
何が嬉しいの?
これを使わないときにどのへんが大変なのか #??
hs
{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
$ stack install hspec-discover'
このコマンドしなくても使えたmrsekut
HogeSpec で、 src/Piyo.hs のやつをimportできない
error
Could not find module ‘Piyo’ Use -v (or `:set -v` in ghci) to see a list of the files searched for.typecheck


特定の重要なテストケースのみをテストする
大きすぎて、全部実行すると時間がかかる場合など



実行できない
app/Main.hs のはimportできないのか #??
module ‘Main’ (test/Spec.hs) imports itself になる
テストしたいものを src/Hoge.hs 以下にいれて import Hoge したらできた


HogeSpec.hsのimportの部分がhieでエラーが出る
普通にコンパイルは通るので❌HIEが悪いのかな


参考
hspec-discoverの導入
関連リンクも
同時実行