(小さな) 実行可能ファイルを作成しようとしています。Cabal を使用してセットアップし、HSpec を使用して単体テストを行いました。ほとんどすべてのコードは別のモジュールにありLibrary
、 の本体を含めて、関数main
としてメイン モジュールにインポートします。run
-- In src/Hecho.hs
module Main where
import Library(run)
main :: IO ()
main = run
関数はmain
可能な限り短くなりましたが、実行関数と等しいことを確認する、または他の方法でテストするなど、テストを作成する方法はありますか? 問題は、私の仕様ファイルが別のMain
モジュールを定義していて、別のモジュールから何もインポートできない (または少なくとも方法がわからない) ように見えることMain
です。
たとえば、次のことを試してみると
-- In test/HechoSpec.hs
module Main where
import Library
import Main
import Test.Hspec
main :: IO ()
main = hspec $ do
-- Test definitions
次に、エラーが発生します。
Module imports form a cycle:
module `Main' (test/HechoSpec.hs) imports itself
メイン関数をテストする方法はありますか?