Yesod提供了yesod test
工具。测试是Spec
可以由 执行的类型的值hspec
。
脚手架带有一个预定义的规范,在tests/HomeTest.hs
该规范中显式调用tests/main.hs
,该文件显然是在您运行时编译和执行的yesod test
。我假设您应该在main.hs
创建它们时手动添加所有规范,尽管也许有一种方法可以使用 hspec 的自动测试发现。
这对于回归测试非常有用,但是测试驱动开发呢?编写单个测试然后在开发过程中重复运行它的正确方法是什么?的帮助文本yesod test
表明没有办法做到这一点:
$ yesod test --help
Usage: yesod test
Build and run the integration tests
直接运行一个规范文件是行不通的(我想你不会期望它,因为它不包含main
定义):
$ runhaskell tests/HomeTest.hs
tests/HomeTest.hs:4:8:
Could not find module ‘TestImport’
Use -v to see a list of the files searched for.
$ cabal run tests/HomeTest.hs
cabal: Cannot build the executable 'myproject' because the component is marked as disabled in the .cabal file.
我不确定为什么我的项目的可执行文件被禁用。我应该改变它吗?或者我应该创建一个临时副本main.hs
并注释掉所有其他测试?什么是最干净的解决方案?