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 文件中的代码,似乎有两个可能的问题:

  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'
  ],

这将获得 /tests/specs 中以 .spec.js 结尾的任何文件以及其中的任何子目录,除非该文件名为 exclude.spec.js。

于 2014-04-18T20:30:18.750 回答
0

我也遇到了这个问题,对我来说,在我的 protractorConf 文件中,我必须更改路径的位置。

我原本有

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

它适用于量角器和 grunt-protractor-runner

但由于某种原因,量角器覆盖,这没有运行。我把它改成

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

这解决了我的问题。基本上量角器覆盖从基础而不是从配置文件中查看路径。

于 2014-05-15T19:02:29.310 回答