1

分度器とGulpでCucumberJSをセットアップしました。ここで入手可能なドキュメントに従いました: https://github.com/cucumber/cucumber-js

機能ファイルとステップ定義ファイルがあります。また、support フォルダーに world.js ファイルを作成し、ステップ定義ファイルに次のようにロードします。

this.World = require("../support/world.js").World;

したがって、ドキュメントに示されているのと同じ方法です。この瞬間まですべてが機能します。

ケースにキュウリのフックをいくつか追加しようとしました。ドキュメントで提案されているように、supportフォルダーにhooks.jsファイルを作成しました。

// features/support/hooks.js (this path is just a suggestion)

var myHooks = function () {
 this.Before(function (callback) {
    // Just like inside step definitions, "this" is set to a World instance.
    // It's actually the same instance the current scenario step definitions
    // will receive.

    // Let's say we have a bunch of "maintenance" methods available on our World
    // instance, we can fire some to prepare the application for the next
    // scenario:

    console.log("Before hook");

    // Don't forget to tell Cucumber when you're done:
    callback();
  });
};

module.exports = myHooks;

ドキュメントには、この hook.js ファイルをステップ定義にロードする方法が記載されていないため、何らかの形で「構成よりも規則」アプローチでロードされていると想定しています。残念ながら、ファイルは読み込まれず、Before メソッドは実行されません。

何か案は?

4

2 に答える 2

1

フックが step_definitions と同じフォルダーにない場合は、フックが使用している場所を明示的に指定する必要があります--require。例えば、

 cucumber.js test/functional/features/xyz.feature 
--require test/functional/step_definitions/ 
--require features/support/ --format=pretty

これを避けるために、私は通常、フックを step_definitions フォルダーの下に保持します。とにかく step_definitions に require を指定する必要があるため、フックに require を明示的に指定する必要はありません。したがって、フックが にある場合test/functional/step_definitions/、次のフックを使用すると、フックが呼び出されるはずです。

 cucumber.js test/functional/features/xyz.feature 
--require test/functional/step_definitions/ 
--format=pretty
于 2015-07-02T16:40:29.747 に答える
1

ファイルを取得したら、 protractor.conf.jsファイルの内部にhooks.js移動し、そこに hooks.js ファイルへのパスを追加します。これで、hooks.js ファイルが読み込まれます。cucumberOpts

cucumberOpts: {
    require: [
      conf.paths.e2e + '/steps/**/*Steps.js',
      conf.paths.e2e + '/utilities/hooks.js',
    ],
    tags: ['~@wip', '~@manual'],
    format: 'pretty'
  }

また、 hooks.jsファイルにconsole.log('Was my hook loaded')を含め、後でそのログ テキストを検索して、フックが適切にロードされたことを確認することもできます。

于 2016-09-12T20:57:17.927 に答える