2017-09-07 31 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的源代碼(這對當前活躍的分支發生了很大變化,但它仍然不允許你想要麼什麼):

相關問題