2014-09-20 55 views
1

有沒有什麼方法可以記錄cucumber.js步驟定義代碼中的步驟? 我試着做jsduck @class效仿:如何記錄(jsduck/jsdoc)cucumber.js步驟的定義?

/** 
* @class Global.steps.common 
* Common steps. 
*/ 
var steps = module.exports = function() { 
    /** 
    * Step 1 description. 
    */ 
    this.Given(/^StepDef1$/, function(next) { 
     ... 
    }); 

    /** 
    * Step 2 description. 
    */ 
    this.Given(/^StepDef2$/, function(next) { 
     ... 
    }); 
}); 

但jsduck承認只有最後一步的說明。

回答

1

您將遇到的主要問題是您的步驟的名稱。使用黃瓜,你想使用像/Given I have entered (.*) into the calculator/這樣的純文本的相當長的段落,而文檔工具希望你主要記錄各種標識符,如addNumber(我對JSDoc不太確定,但JSDuck對類允許的字符有限制和屬性名稱)。

的具體問題,即jsduck識別只剩下最後一步,從JSDuck嘗試自動檢測這些文檔塊描述項目的名稱其實莖,都將它們檢測爲Given,並且當它不允許具有相同名稱的多個屬性,只是最後一個將在最終的輸出中呈現。

所以,你可以做的是給你的屬性這樣一個名字:

/** 
* @property Given_I_have_entered_X_into_the_calculator 
* Step 1 description. 
*/ 
this.Given(/^Given I have entered (.*) into the calculator$/, function(next) { 
    ... 
}); 

那是當然有點乏味。你可能會extending JSDuck with your own custom tags改善這一點,所以你可以寫:

/** 
* @Given I have entered ? into the calculator 
* Step 1 description. 
*/ 
this.Given(/^Given I have entered (.*) into the calculator$/, function(next) { 
    ... 
}); 

可惜JSDuck的自定義標籤系統是有限的,所以你不能輕易地從代碼中的正則表達式自動檢測名稱。也許可以分叉JSDuck並擴展它的內部。