将 HSpec 与堆栈一起使用
Using HSpec with Stack
我有以下架构:
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。
Finished in 0.0002 seconds
0 examples, 0 failures
Spec.hs 是正确的输入:{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
我的 MessageSpec 模块公开了:module MessageSpec (main, spec)。
你能帮我想办法让我的堆栈项目做我所有的测试吗?
谢谢,
您的规范路径必须遵循模块名称约定。 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-discover
的hspec/Run.hs
中找到)
我有以下架构:
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。
Finished in 0.0002 seconds 0 examples, 0 failures
Spec.hs 是正确的输入:{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
我的 MessageSpec 模块公开了:module MessageSpec (main, spec)。
你能帮我想办法让我的堆栈项目做我所有的测试吗?
谢谢,
您的规范路径必须遵循模块名称约定。 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-discover
的hspec/Run.hs
中找到)