我正在关注向Hspec传递选项的hspec documentation。从命令行传递时,指定我的选项按预期工作,但从.hspec
文件或任何其他列出的方法传递时不能。
我的测试套件中的一个测试匹配过滤器“post_returns_200”。我可以单独运行此测试,而无需通过命令
运行套件的其余部分stack test --test-arguments=--match="post_returns_200"
链接的hspec文档显示我不仅可以从命令行指定此过滤器,还可以:从.hspec
文件,ghci
内部或环境变量中指定此过滤器。当我按照其他方法之一按照文档指定我的过滤器时,我得到一个“无法识别的选项”错误。例如,当我通过
.hspec
文件中指定选项时
$ echo --match="post_returns_200">>.hspec
然后运行stack test
会返回以下内容
$ stack test
azara-api-0.1.0.0: test (suite: azara-test)
azara-test: unrecognized option `--match="post_returns_200"' in config file /home/matthew/backup/azara_work/platform/api/.hspec
Test suite failure for package azara-api-0.1.0.0
azara-test: exited with: ExitFailure 1
Logs printed to console
当我尝试通过环境变量或ghci中指定选项时,我收到类似的错误。我已经尝试了很多关于如何指定命令的变体,例如有或没有引号,有和没有“--test-arguments=
”,但我在这一点上完全被困。有关为什么选项在通过命令行指定时正常工作但是其他方法无法识别的任何建议?
答案 0 :(得分:1)
由于某种原因,我忽略了,hspec在命令行和配置文件中识别出一组不同的选项。
截至目前,显式命令行参数(使用堆栈时通过--test-arguments
)是将--match
传递给hspec的唯一方法。
从2.4.4的源代码(在当前活动分支上已经发生了很大变化,但它仍然不允许你想要的东西):
Command line options使用recognizedOptions
进行解析,其中包含commandLineOptions
(包括--match
)和configFileOptions
。
Config file options,parseOtherOptions
,仅使用configFileOptions
,不包括--match
。