2017-10-04 32 views
0

我有這樣的結構的測試文件:摩卡層次fgrep一樣

describe('Client A', function() { 
    describe("Scenario 1", function() {...}); 
    describe("Scenario 2", function() {...}); 
     : 
     : 
}); 

describe('Client B', function() { 
    describe("Scenario 1", function() {...}); 
    describe("Scenario 2", function() {...}); 
     : 
     : 
}); 
    : 
    : 

我想執行一個客戶端只有一個場景,例如「客戶端C」 +「方案5」。

隨着--fgrep我設法選擇一個給定的客戶端的所有情景:

mocha test.js --fgrep "Client C" 

或特定情況下對所有客戶端:

mocha test.js --fgrep "Scenario 5" 

有沒有什麼辦法來迫使一些分級選擇以實現我所尋找的目標?

回答

1

--fgrep--grep與個別測試的全名匹配。 Mocha通過將外部到內部的所有描述塊的名稱以及您在定義測試時使用單個空格作爲分隔符的名稱給it建立測試全名。因此,如果我們想象你function() {...}回調都含有一個it("something",() => {}),然後在你的套件測試的全名是:

Client A Scenario 1 something 
Client A Scenario 2 something 
Client B Scenario 1 something 
Client B Scenario 2 something 

(想必你也有「客戶端C」等)

因此,您只能通過執行以下操作選擇與客戶端A的方案2相關的測試:

mocha --fgrep "Client A Scenario 2" 
+0

太棒了!還有一件事 - 是否有螞蟻的方式來使用通配符,以便在'fgrep'中有更短的字符串? (例如'mocha --fgrep「A * 2」') – guyaloni

+1

您必須使用'--grep',而不是'--fgrep'。 '--grep'採用JavaScript [正則表達式模式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)。我懷疑你想要的是'--grep「A. * 2」'。如果要匹配0個或更多個未知字符,則必須使用星號。序列'A *'匹配0個或更多個'A'。 – Louis

+0

太好了,謝謝,它有效! – guyaloni