2017-09-07 27 views
1

我正在关注传递选项给Hspec的hspec documentation。从命令行传递时指定我的选项按预期工作,但从.hspec文件或任何其他列出的方法传递时不起作用。hspec测试参数可以在命令行上运行,但不能从.hspec文件运行

我的测试套件中的一个测试与过滤器“post_returns_200”匹配。我可以不通过命令运行套件的其余部分单独运行这个测试

stack test --test-arguments=--match="post_returns_200" 

链接的hspec资料显示,我应该可以指定这个过滤器不仅在命令行中,也:从.hspec文件,从ghci或环境变量。然而,当我按照文档指定我的过滤器时,出现“无法识别的选项”错误。举例来说,当我指定通过

$ echo --match="post_returns_200">>.hspec 

.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

你试过简单的'$ echo --match = post_returns_200> .hspec'吗? (使用'>'覆盖文件而不是附加到文件中,否则它将包含'--match ='post_returns_200'''行。) –

+0

@ M.Aroosi是的,试过并得到相同的错误。因此,与'.hspec'文件相同的错误只包含单行'--match = post_returns_200'。 – mherzl

回答

1

由于某种原因我忽略了,hspec在命令行和配置文件中识别了一组不同的选项。

截至目前,显式命令行参数(通过使用堆栈时通过--test-arguments)是将--match传递给hspec的唯一方法。


从2.4.4的源代码(这对当前活跃的分支发生了很大变化,但它仍然不允许你想要么什么):

相关问题