我有以下架构:
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 test
HSpec找不到我的测试int MessageSpec.hs。
在0.0002秒内完成0个示例,0个失败
Spec.hs是正确的输入:{-#OPTIONS_GHC -F -pgmF hspec-discover#-}
我的MessageSpec模块正在公开:模块MessageSpec(主要,规格)。
您能否帮助我找到一种方法来使我的堆栈项目完成所有测试。
谢谢,
规范的路径必须遵循模块名称约定。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>
与
-- If file is test/MessageSpec.hs
Message:
<someDescription>
<some assertion>
<some assertion>
<some assertion>
(此行为的相关代码中可以找到hspec/Run.hs
的hspec-discover
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句