首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HSpec与堆栈

使用HSpec与堆栈
EN

Stack Overflow用户
提问于 2016-01-26 00:41:08
回答 1查看 2.8K关注 0票数 4

我有以下架构:

代码语言:javascript
复制
  backend
  ├── Chat.hs
  ├── Main.hs
  └── Message.hs
  test
  ├── backendSpec
  │   └── MessageSpec.hs
  └── Spec.hs

我的.cabal文件包含以下内容

代码语言:javascript
复制
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

但当我做的时候

代码语言:javascript
复制
stack test

HSpec找不到我的测试int MessageSpec.hs。

在0.0002秒内完成0例,0次失败

Spec.hs是正确的输入:{-# OPTIONS_GHC -F -pgmF hspec--pgmF #-}

我的MessageSpec模块公开了:模块MessageSpec (main,spec)。

你能帮我找个办法让我的堆栈项目做我所有的测试吗?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-26 06:47:37

您通往规范的路径必须遵循模块名称约定,必须是。backendSpec.MessageSpec不是一个有效的模块名称,因为它以小写字母开头。

此外,您的规范的模块名称只应该与原始模块的附加后缀Spec不同。您在backendSpec中的模块不会遵循以下内容:

代码语言:javascript
复制
module Message where ...
-- vs
module BackendSpec.MessageSpec where ...

因此,要解决这个问题,请确保test目录中的所有目录都以大写字母开头。但是更好的是,确保测试目录具有与您的src目录相同的结构,因为这将在测试期间产生更好的模块名称:

代码语言:javascript
复制
-- If file is test/BackendSpec/MessageSpec.hs
BackendSpec.Message:
   <someDescription>
      <some assertion>
      <some assertion>
      <some assertion>

vs

代码语言:javascript
复制
-- If file is test/MessageSpec.hs
Message:
   <someDescription>
      <some assertion>
      <some assertion>
      <some assertion>

(这种行为的相关代码可在hspec/Run.hs of hspec-discover中找到)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35005167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档