Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为jasmine测试生成代码覆盖率报告(通过grunt)在phantomjs中的browserify包上运行_Node.js_Gruntjs_Phantomjs_Browserify_Istanbul - Fatal编程技术网

Node.js 为jasmine测试生成代码覆盖率报告(通过grunt)在phantomjs中的browserify包上运行

Node.js 为jasmine测试生成代码覆盖率报告(通过grunt)在phantomjs中的browserify包上运行,node.js,gruntjs,phantomjs,browserify,istanbul,Node.js,Gruntjs,Phantomjs,Browserify,Istanbul,标题真的说明了一切。尽管我浏览了互联网,但还没有找到一个解决这个问题的例子 这里有一些未遂事件 -咕噜、布劳塞里菲和茉莉 -布朗塞里菲和伊斯坦布尔 这是我正在编写的代码(请注意,它是'browserify'分支-Gruntfile.js有点乱,但很快就会整理好)。我最初使用console.log进行的调查表明,bundle.src.js以某种方式加载到页面中,但是当测试运行(并通过!)时,bundle.src.js中的代码没有运行,所以我感觉可能是一个别名问题。。。虽然当我在chrome中打

标题真的说明了一切。尽管我浏览了互联网,但还没有找到一个解决这个问题的例子

这里有一些未遂事件

  • -咕噜、布劳塞里菲和茉莉
  • -布朗塞里菲和伊斯坦布尔

这是我正在编写的代码(请注意,它是'browserify'分支-Gruntfile.js有点乱,但很快就会整理好)。我最初使用
console.log
进行的调查表明,
bundle.src.js
以某种方式加载到页面中,但是当测试运行(并通过!)时,
bundle.src.js
中的代码没有运行,所以我感觉可能是一个别名问题。。。虽然当我在chrome中打开specrunner时,只限于phantomjs,但代码正在运行。

我正在使用
grunt browserify
+
browserify istanbul
+
grunt contrib jasmine
+
grunt模板jasmine istanbul
作为解决方案。在使用
browserify
构建源文件时,此解决方案还排除了第三方库

先显示代码,我稍后解释

grunt.initConfig({
browserify: {
  // build specs using browserify
  specs: {
    src: ["spec/**/*Spec.js"],
    dest: "spec/build/specs.js",
    options: {
      debug: true
    }
  },
  // build source files using browserify and browserify-istanbul
  dev: {
    options: {
      debug: true,
      browserifyOptions: {
        standalone: 'abc'
      },
      transform: [['browserify-istanbul', {
        ignore: ['**/node_modules/**'], // ignore third party libs
        defaultIgnore: true
      }]]
    },
    src: ['abc.js'],
    dest: 'dist/abc.js'
  }
},
connect: {
  server: {
    options: {
      port: 7000
    }
  }
},
// test using jasmine, generate coverage report using istanbul
jasmine: {
  coverage: {
    src: ['dist/abc.js'],
    options: {
      junit: {
            path: 'bin/junit'
        },
      host: 'http://localhost:7000/',
      specs:  'spec/build/specs.js',
      keepRunner: true,
      summary: true,
      template: require('grunt-template-jasmine-istanbul'),
      templateOptions: {
        replace: false, // *** this option is very important
        coverage: 'bin/coverage/coverage.json',
        report: [
          {
          type: 'html',
          options: {
            dir: 'spec/coverage/html'
          }
        }]
      }
    }
  }      
}

  grunt.registerTask('specs', ['browserify:specs', 'browserify:dev', 'connect', 'jasmine']);
生成伊斯坦布尔覆盖率报告的步骤可归纳为三个步骤:

  • 仪器代码
  • 运行测试
  • 生成覆盖率报告
  • 在我们的解决方案中,我们在步骤1中使用
    browerify伊斯坦布尔
    ,在步骤2和3中使用
    grunt contrib jasmine
    runt template jasmine伊斯坦布尔

    browserify伊斯坦布尔
    将允许您在browserify构建步骤中插入代码,这样,我们可以轻松忽略第三方LIB。但是
    grunt模板jasmine istanbul
    将再次输入代码。为了避免这种情况,您可以在选项中将
    replace
    设置为
    false

    参考文献:

  • --
    替换
    选项

  • 你找到这个了吗?它目前是否在戒备项目中起作用?当这个问题在这里已经三年没有答案时,它意味着什么。。。