2016-03-16 42 views
1

我想使用glob與摩卡。可悲的摩卡不支持排除,也不會傳遞glob選項,所以我必須在不使用glob忽略選項的情況下以單一模式解決此問題。 https://github.com/mochajs/mocha/issues/1577另一種解決方案是使用mocha.opts,但這不是業力兼容,我不知道爲什麼。我可以爲業務定義一個業力兼容的opts文件,併爲節點定義一個節點兼容的opts文件,但是這個問題在問題解決後會立即中斷,所以我正在尋找另一個解決方案。 https://github.com/karma-runner/karma-mocha/issues/88全局模式包括所有js排除某些結局

我需要匹配test/**/*.spec.js並從結果中排除test/**/*.karma.spec.js。這是可能的一個單一的全局模式?

+0

我試着用'「測試」:「摩卡 - -reporter spec \「test/**/*(。spec.js |!(。node.spec.js))\」「,到目前爲止。它被解析,但我得到一個錯誤,無法找到模塊「測試/功能」。這很奇怪,因爲該文件夾中沒有'.spec.js'或節點模塊,只有BDD的'.feature'文件。 – inf3rno

回答

1

我們這裏說的是用邏輯運算符表示的AND("*.spec.js", NOT("*.karma.spec.js"))。我檢查了glob文檔,它不支持AND邏輯運算符。

對我們來說幸運的是,我們可以用這個運算符轉換成OR否定:NOT(OR(NOT("*.spec.js"), "*.karma.spec.js"))。我嘗試了test/**/!((!(*.spec.js)|*.karma.spec.js)),但它不起作用。它試圖需要一個帶有test/features路徑的模塊,該路徑是目錄的路徑而不是js文件,所以難怪它不管理它。我不知道那是一種什麼樣的錯誤,但它顯然不起作用。

另一個可能的解決方案是忘記這個AND運算符,並且只使用否定與NOT("*.karma").spec.js。我試過了test/**/!(*.karma).spec.js,這個工作正常。

2

你總是可以使用mochafind在一起。例如,下面的命令將返回一個列表的test/**/*.spec.js並排除test/**/*.karma.spec.js

find test -name '*.spec.js' ! -path '*.karma.spec.js' 

mocha結合起來,以達到你想要的東西:

mocha $(find test -name '*.spec.js' ! -path '*.karma.spec.js')