我有以下架构:
backend
├── Chat.hs
├── Main.hs
└── Message.hs
test
├── backendSpec
│ └── MessageSpec.hs
└── Spec.hs我的.cabal文件包含以下内容
test-suite spec
build-depends: base, hspec == 2.*,
snap >= 0.14.0.6,
containers,
aeson,
text,
transformers,
stm,
snap-core,
snap-server,
socket-io,
engine-io-snap,
snap-cors,
bytestring
hs-source-dirs: test
main-is: Spec.hs
Type: exitcode-stdio-1.0但当我做的时候
stack testHSpec找不到我的测试int MessageSpec.hs。
在0.0002秒内完成0例,0次失败
Spec.hs是正确的输入:{-# OPTIONS_GHC -F -pgmF hspec--pgmF #-}
我的MessageSpec模块公开了:模块MessageSpec (main,spec)。
你能帮我找个办法让我的堆栈项目做我所有的测试吗?
谢谢,
发布于 2016-01-26 06:47:37
您通往规范的路径必须遵循模块名称约定,必须是。backendSpec.MessageSpec不是一个有效的模块名称,因为它以小写字母开头。
此外,您的规范的模块名称只应该与原始模块的附加后缀Spec不同。您在backendSpec中的模块不会遵循以下内容:
module Message where ...
-- vs
module BackendSpec.MessageSpec where ...因此,要解决这个问题,请确保test目录中的所有目录都以大写字母开头。但是更好的是,确保测试目录具有与您的src目录相同的结构,因为这将在测试期间产生更好的模块名称:
-- If file is test/BackendSpec/MessageSpec.hs
BackendSpec.Message:
<someDescription>
<some assertion>
<some assertion>
<some assertion>vs
-- If file is test/MessageSpec.hs
Message:
<someDescription>
<some assertion>
<some assertion>
<some assertion>(这种行为的相关代码可在hspec/Run.hs of hspec-discover中找到)
https://stackoverflow.com/questions/35005167
复制相似问题