我正在尝试编写一个(小)可执行文件,使用 Cabal 进行设置,使用 HSpec 进行单元测试。几乎我所有的代码都在一个单独的模块中Library
,包括的主体,我将其作为函数main
导入到我的主模块中run
-- In src/Hecho.hs
module Main where
import Library(run)
main :: IO ()
main = run
虽然这个main
函数现在和我想的一样短,但有没有办法可以为它编写一个测试,比如检查它是否等于 run 函数,或者以其他方式测试它?问题是我的规范文件定义了另一个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
有没有办法测试主要功能?