在堆栈中使用HSpec

Dref360

我有以下架构:

  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.hshspec-discover

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章