1

バックグラウンド

grunt スクリプトで grunt-protractor-coverage を使用して、分度器機能 e2e テストのコード カバレッジを取得しようとしています。開始するには、このチュートリアルを使用して、いくつかの小さな変更を加えたところ、完全に機能しました。これをガイドとして使用して、新しい gruntfile を作成し、「express」アプリを Rails アプリ バックエンドに置き換えました。

問題

gruntfile を実行すると、次のスタック トレースが表示されます。

../dummy/node_modules/grunt-protractor-coverage/node_modules/protractor/node_modules/glob/glob.js:130
throw new Error("must provide pattern")
      ^
Error: must provide pattern
    at new Glob (../dummy/node_modules/grunt-protractor-coverage/node_modules/protractor/node_modules/glob/glob.js:130:11)
    at glob ../dummy/node_modules/grunt-protractor-coverage/node_modules/protractor/node_modules/glob/glob.js:57:11)
    at Function.globSync [as sync] (../dummy/node_modules/grunt-protractor-coverage/node_modules/protractor/node_modules/glob/glob.js:76:10)
    at Function.ConfigParser.resolveFilePatterns (../dummy/node_modules/grunt-protractor-coverage/node_modules/protractor/lib/configParser.js:89:26)
    at Runner.run (../dummy/node_modules/grunt-protractor-coverage/node_modules/protractor/lib/runner.js:323:24)
    at process.<anonymous> (../dummy/node_modules/grunt-protractor-coverage/node_modules/protractor/lib/runFromLauncher.js:32:14)
    at process.EventEmitter.emit (events.js:98:17)
    at handleMessage (child_process.js:318:10)
    at Pipe.channel.onread (child_process.js:345:11)
[launcher] Runner Process Exited With Error Code: 8

[node-inspector] ( https://github.com/node-inspector/node-inspector )を介して grunt の task.js ファイルのコードをトレースすると、次の2 つの問題が考えられます。

  1. 必要なファイルを正しく取得するためのパラメーターが構成ファイルから欠落しています
  2. 構文の問題があります

なぜこのエラーがスローされているのか分かりますか?

私の設定ファイル

protractor_coverage: {
    options: {
        configFile: '/usr/local/lib/node_modules/protractor/referenceConf.js', // Default config file
        keepAlive: true, // If false, the grunt process stops when the test fails.
        noColor: false, // If true, protractor will not use colors in its output.
        coverageDir: '<%= dirs.instrumentedE2E %>',
        args: {}
    },
    phantom: {
        options: {
            args: {
                baseUrl: 'http://localhost:3000/',
                // Arguments passed to the command
                'browser': 'phantomjs'
            }
        }
    },
    chrome: {
        options: {
            args: {
                baseUrl: 'http://localhost:3000/',
                // Arguments passed to the command
                'browser': 'chrome'
            }
        }
    }
},
4

2 に答える 2

0

このエラーは、プラグインが仕様ファイルを見つけられなかったことを意味します。これに関連するいくつかのバグがあり、最近のリリースで修正されました。

通常、protractorConf.js をプロジェクトの一部にする必要があります。通常、「tests」というディレクトリに配置します。

したがって、オプションは次のようになります。

options: {
        configFile: 'tests/protractorConf.js',
        keepAlive: true, // If false, the grunt process stops when the test fails.
        noColor: false, // If true, protractor will not use colors in its output.
        coverageDir: '<%= dirs.instrumentedE2E %>',
        args: {}
    },

次に、仕様を「tests/specs」ディレクトリに配置し、この protractorConf.js で次のように参照します。

  specs: [
    'tests/specs/**/*.spec.js',
    '!**/exclude.spec.js'
  ],

これにより、ファイルの名前が exclude.spec.js でない限り、/tests/specs とそのサブディレクトリ内の .spec.js で終わるすべてのファイルが取得されます。

于 2014-04-18T20:30:18.750 に答える
0

私もこの問題を抱えていました.protractorConfファイルで、パスの場所を変更する必要がありました.

もともと持っていた

specs: [
  './e2e/**/*.spec.js'
],

分度器とうなり声-分度器-ランナーでうまく機能しました

しかし、何らかの理由で、分度器カバレッジ、これは実行されませんでした。に変更しました

specs: [
  'test/e2e/**/*.spec.js'
],

これで私の問題は解決しました。基本的に、分度器カバレッジは、構成ファイルからではなく、ベースからのパスを調べます。

于 2014-05-15T19:02:29.310 に答える