1

有没有办法在 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 只识别最后一步的描述。

4

1 回答 1

1

您将遇到的主要问题是步骤的名称。/Given I have entered (.*) into the calculator/使用Cucumber addNumber,您希望使用相当长的纯文本段落,例如名称)。

jsduck 仅识别最后一步的具体问题源于这样一个事实,即 JSDuck 尝试自动检测这些 doc-blocks 描述的项目的名称,将它们都检测为Given,并且因为它不允许使用多个属性同名,只有最后一个将在最终输出中呈现。

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

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

这当然相当乏味。您可以通过使用自己的自定义标签扩展 JSDuck来改进这一点,因此您可以编写:

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

不幸的是,JSDuck 的自定义标签系统是有限的,所以你不能轻易地从代码中的正则表达式中自动检测名称。如果你分叉 JSDuck 并扩展它的内部,可能会发生这种情况。

于 2014-09-21T06:57:48.157 回答