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 は最後の 1 ステップの記述しか認識しません。

4

1 に答える 1

1

遭遇する主な問題は、ステップの名前です。Cucumber では、 のようなプレーン テキストのかなり長いパッセージを使用したいと思いますが/Given I have entered (.*) into the calculator/、ドキュメント ツールでは、主に のような名前でさまざまな識別子をドキュメント化することを期待していますaddNumber(JSDoc についてはよくわかりませんが、JSDuck にはクラスとプロパティで許可される文字に制限があります)。名前)。

jsduck が最後のステップのみを認識するという具体的な問題は、 JSDuckがこれらの doc-block が記述するアイテムの名前を自動検出しようとするという事実に起因し、両方を として検出し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 に答える