如何记录(jsduck / jsdoc)cucumber.js步骤定义?

时间:2014-09-20 14:53:47

标签: javascript documentation jsdoc cucumberjs jsduck

有没有办法记录cucumber.js步骤定义代码中的步骤? 我试过用jsduck @class:

来模仿它
/**
 * @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 个答案:

答案 0 :(得分:1)

您将遇到的主要问题是您的步骤名称。使用Cucumber,您希望使用相当长的纯文本段落,如/Given I have entered (.*) into the calculator/,而文档工具则希望您主要记录名称为addNumber的各种标识符(我对JSDoc不太确定,但是JSDuck对类和属性名称中允许的字符有限制。)

jsduck只识别最后一步的具体问题源于JSDuck试图自动检测这些doc-blocks描述的项目名称的事实,将它们检测为{ {1}},并且由于它不允许多个具有相同名称的属性,因此最后一个属性将在最终输出中呈现。

所以,你可以做的是给你的属性这样的名字:

Given

这当然相当乏味。你可以通过extending JSDuck with your own custom tags改进它,所以你可以写:

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

不幸的是,JSDuck的自定义标签系统是有限的,因此您无法轻松地从代码中的正则表达式自动检测名称。可能虽然你分叉JSDuck并扩展它的内部。